This is to support things like go-import meta tags, which are on a
per-repo basis.

Signed-off-by: Jason A. Donenfeld <ja...@zx2c4.com>
---
This is kind of really ugly, and I'm not keen on its approach, but I
thought I'd post it to get some feedback on the general "requirement".
It turns out, the ugly Go ecosystem requires meta tags like these to
function:

<meta name="go-import" content="git.zx2c4.com/terrible-go-package git 
https://git.zx2c4.com/terrible-go-package"; />

The question is: is cgit a good place for doing this? Is this here,
below, actually a good way of going about it, if so?

 cgit.c       | 4 ++++
 cgit.h       | 1 +
 cgitrc.5.txt | 4 ++++
 shared.c     | 1 +
 ui-shared.c  | 2 ++
 5 files changed, 12 insertions(+)

diff --git a/cgit.c b/cgit.c
index bd9cb3f..cf65bbd 100644
--- a/cgit.c
+++ b/cgit.c
@@ -46,6 +46,8 @@ static void repo_config(struct cgit_repo *repo, const char 
*name, const char *va
                repo->homepage = xstrdup(value);
        else if (!strcmp(name, "defbranch"))
                repo->defbranch = xstrdup(value);
+       else if (!strcmp(name, "extra-head-content"))
+               repo->extra_head_content = xstrdup(value);
        else if (!strcmp(name, "snapshots"))
                repo->snapshots = ctx.cfg.snapshots & 
cgit_parse_snapshots_mask(value);
        else if (!strcmp(name, "enable-commit-graph"))
@@ -802,6 +804,8 @@ static void print_repo(FILE *f, struct cgit_repo *repo)
        }
        if (repo->defbranch)
                fprintf(f, "repo.defbranch=%s\n", repo->defbranch);
+       if (repo->extra_head_content)
+               fprintf(f, "repo.extra-head-content=%s\n", 
repo->extra_head_content);
        if (repo->module_link)
                fprintf(f, "repo.module-link=%s\n", repo->module_link);
        if (repo->section)
diff --git a/cgit.h b/cgit.h
index 005ae63..edec271 100644
--- a/cgit.h
+++ b/cgit.h
@@ -79,6 +79,7 @@ struct cgit_repo {
        char *name;
        char *path;
        char *desc;
+       char *extra_head_content;
        char *owner;
        char *homepage;
        char *defbranch;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 4da166c..fa2fbfc 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -501,6 +501,10 @@ repo.defbranch::
 repo.desc::
        The value to show as repository description. Default value: none.
 
+repo.extra-head-content::
+       This value will be added verbatim to the head section of each page
+       displayed for this repo. Default value: none.
+
 repo.homepage::
        The value to show as repository homepage. Default value: none.
 
diff --git a/shared.c b/shared.c
index 21ac8f4..d0405cf 100644
--- a/shared.c
+++ b/shared.c
@@ -53,6 +53,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
        ret->name = ret->url;
        ret->path = NULL;
        ret->desc = cgit_default_repo_desc;
+       ret->extra_head_content = NULL;
        ret->owner = NULL;
        ret->homepage = NULL;
        ret->section = ctx.cfg.section;
diff --git a/ui-shared.c b/ui-shared.c
index 9d8f66b..5197cd6 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -766,6 +766,8 @@ void cgit_print_docstart(void)
                cgit_add_clone_urls(print_rel_vcs_link);
        if (ctx.cfg.head_include)
                html_include(ctx.cfg.head_include);
+       if (ctx.repo && ctx.repo->extra_head_content)
+               html(ctx.repo->extra_head_content);
        html("</head>\n");
        html("<body>\n");
        if (ctx.cfg.header)
-- 
2.16.1

_______________________________________________
CGit mailing list
CGit@lists.zx2c4.com
https://lists.zx2c4.com/mailman/listinfo/cgit

Reply via email to