From c2de6335092a4f5ad7a6a962eb7f91c0245e5e25 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sun, 14 Feb 2021 00:11:29 +1100 Subject: Language and License fields added to repo table --- cgit.c | 14 ++++++++++++++ cgit.h | 4 ++++ ui-repolist.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/cgit.c b/cgit.c index 08d81a1..9f3766d 100644 --- a/cgit.c +++ b/cgit.c @@ -52,6 +52,10 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va repo->desc = xstrdup(value); else if (!strcmp(name, "owner")) repo->owner = xstrdup(value); + else if (!strcmp(name, "language")) + repo->language = xstrdup(value); + else if (!strcmp(name, "license")) + repo->license = xstrdup(value); else if (!strcmp(name, "homepage")) repo->homepage = xstrdup(value); else if (!strcmp(name, "defbranch")) @@ -177,6 +181,10 @@ static void config_cb(const char *name, const char *value) ctx.cfg.enable_index_links = atoi(value); else if (!strcmp(name, "enable-index-owner")) ctx.cfg.enable_index_owner = atoi(value); + else if (!strcmp(name, "enable-index-license")) + ctx.cfg.enable_index_license = atoi(value); + else if (!strcmp(name, "enable-index-language")) + ctx.cfg.enable_index_language = atoi(value); else if (!strcmp(name, "enable-blame")) ctx.cfg.enable_blame = atoi(value); else if (!strcmp(name, "enable-commit-graph")) @@ -382,6 +390,8 @@ static void prepare_context(void) ctx.cfg.local_time = 0; ctx.cfg.enable_http_clone = 1; ctx.cfg.enable_index_owner = 1; + ctx.cfg.enable_index_language = 0; + ctx.cfg.enable_index_license = 0; ctx.cfg.enable_tree_linenumbers = 1; ctx.cfg.enable_git_config = 0; ctx.cfg.max_repo_count = 50; @@ -791,6 +801,10 @@ static void print_repo(FILE *f, struct cgit_repo *repo) fprintf(f, "repo.url=%s\n", repo->url); fprintf(f, "repo.name=%s\n", repo->name); fprintf(f, "repo.path=%s\n", repo->path); + if (repo->language) + fprintf(f, "repo.language=%s\n", repo->language); + if (repo->license) + fprintf(f, "repo.license=%s\n", repo->license); if (repo->owner) fprintf(f, "repo.owner=%s\n", repo->owner); if (repo->desc) { diff --git a/cgit.h b/cgit.h index 69b5c13..6e76300 100644 --- a/cgit.h +++ b/cgit.h @@ -83,6 +83,8 @@ struct cgit_repo { char *path; char *desc; char *extra_head_content; + char *language; + char *license; char *owner; char *homepage; char *defbranch; @@ -231,6 +233,8 @@ struct cgit_config { int enable_http_clone; int enable_index_links; int enable_index_owner; + int enable_index_license; + int enable_index_language; int enable_blame; int enable_commit_graph; int enable_log_filecount; diff --git a/ui-repolist.c b/ui-repolist.c index 529a203..c12cb19 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -92,6 +92,10 @@ static int is_match(struct cgit_repo *repo) return 1; if (repo->desc && strcasestr(repo->desc, ctx.qry.search)) return 1; + if (repo->language && strcasestr(repo->language, ctx.qry.search)) + return 1; + if (repo->license && strcasestr(repo->license, ctx.qry.search)) + return 1; if (repo->owner && strcasestr(repo->owner, ctx.qry.search)) return 1; return 0; @@ -145,6 +149,10 @@ static void print_header(void) html(""); print_sort_header("Name", "name"); print_sort_header("Description", "desc"); + if (ctx.cfg.enable_index_language) + print_sort_header("Language", "language"); + if (ctx.cfg.enable_index_license) + print_sort_header("License", "license"); if (ctx.cfg.enable_index_owner) print_sort_header("Owner", "owner"); print_sort_header("Idle", "idle"); @@ -200,6 +208,22 @@ static int sort_desc(const void *a, const void *b) return cmp(r1->desc, r2->desc); } +static int sort_language(const void *a, const void *b) +{ + const struct cgit_repo *r1 = a; + const struct cgit_repo *r2 = b; + + return cmp(r1->language, r2->language); +} + +static int sort_license(const void *a, const void *b) +{ + const struct cgit_repo *r1 = a; + const struct cgit_repo *r2 = b; + + return cmp(r1->license, r2->license); +} + static int sort_owner(const void *a, const void *b) { const struct cgit_repo *r1 = a; @@ -244,6 +268,8 @@ struct sortcolumn { static const struct sortcolumn sortcolumn[] = { {"section", sort_section}, {"name", sort_name}, + {"language", sort_language}, + {"license", sort_license}, {"desc", sort_desc}, {"owner", sort_owner}, {"idle", sort_idle}, @@ -282,6 +308,10 @@ void cgit_print_repolist(void) ++columns; if (ctx.cfg.enable_index_owner) ++columns; + if (ctx.cfg.enable_index_license) + ++columns; + if (ctx.cfg.enable_index_language) + ++columns; ctx.page.title = ctx.cfg.root_title; cgit_print_http_headers(); @@ -330,6 +360,16 @@ void cgit_print_repolist(void) html("..."); html_link_close(); html(""); + if (ctx.cfg.enable_index_language) { + if (ctx.repo->language) + html(ctx.repo->language); + html(""); + } + if (ctx.cfg.enable_index_license) { + if (ctx.repo->license) + html(ctx.repo->license); + html(""); + } if (ctx.cfg.enable_index_owner) { if (ctx.repo->owner_filter) { cgit_open_filter(ctx.repo->owner_filter); -- cgit