Add 'about-filter' and 'repo.about-filter' options

These options can be used to execute a filter command on each about-page,
both top-level and for each repository (repo.about-filter can be used
to override the current about-filter).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Tento commit je obsažen v:
Lars Hjemli
2009-08-09 13:27:21 +02:00
rodič e1782fff8a
revize 537c05f138
6 změnil soubory, kde provedl 28 přidání a 2 odebrání

4
cgit.c
Zobrazit soubor

@@ -90,6 +90,8 @@ void config_cb(const char *name, const char *value)
ctx.cfg.cache_static_ttl = atoi(value); ctx.cfg.cache_static_ttl = atoi(value);
else if (!strcmp(name, "cache-dynamic-ttl")) else if (!strcmp(name, "cache-dynamic-ttl"))
ctx.cfg.cache_dynamic_ttl = atoi(value); ctx.cfg.cache_dynamic_ttl = atoi(value);
else if (!strcmp(name, "about-filter"))
ctx.cfg.about_filter = new_filter(value, 0);
else if (!strcmp(name, "commit-filter")) else if (!strcmp(name, "commit-filter"))
ctx.cfg.commit_filter = new_filter(value, 0); ctx.cfg.commit_filter = new_filter(value, 0);
else if (!strcmp(name, "embedded")) else if (!strcmp(name, "embedded"))
@@ -146,6 +148,8 @@ void config_cb(const char *name, const char *value)
ctx.repo->max_stats = cgit_find_stats_period(value, NULL); ctx.repo->max_stats = cgit_find_stats_period(value, NULL);
else if (ctx.repo && !strcmp(name, "repo.module-link")) else if (ctx.repo && !strcmp(name, "repo.module-link"))
ctx.repo->module_link= xstrdup(value); ctx.repo->module_link= xstrdup(value);
else if (ctx.repo && !strcmp(name, "repo.about-filter"))
ctx.repo->about_filter = new_filter(value, 0);
else if (ctx.repo && !strcmp(name, "repo.commit-filter")) else if (ctx.repo && !strcmp(name, "repo.commit-filter"))
ctx.repo->commit_filter = new_filter(value, 0); ctx.repo->commit_filter = new_filter(value, 0);
else if (ctx.repo && !strcmp(name, "repo.source-filter")) else if (ctx.repo && !strcmp(name, "repo.source-filter"))

2
cgit.h
Zobrazit soubor

@@ -73,6 +73,7 @@ struct cgit_repo {
int enable_log_linecount; int enable_log_linecount;
int max_stats; int max_stats;
time_t mtime; time_t mtime;
struct cgit_filter *about_filter;
struct cgit_filter *commit_filter; struct cgit_filter *commit_filter;
struct cgit_filter *source_filter; struct cgit_filter *source_filter;
}; };
@@ -185,6 +186,7 @@ struct cgit_config {
int summary_branches; int summary_branches;
int summary_log; int summary_log;
int summary_tags; int summary_tags;
struct cgit_filter *about_filter;
struct cgit_filter *commit_filter; struct cgit_filter *commit_filter;
struct cgit_filter *source_filter; struct cgit_filter *source_filter;
}; };

Zobrazit soubor

@@ -16,6 +16,13 @@ lines, and lines starting with '#', are ignored.
GLOBAL SETTINGS GLOBAL SETTINGS
--------------- ---------------
about-filter::
Specifies a command which will be invoked to format the content of
about pages (both top-level and for each repository). The command will
get the content of the about-file on its STDIN, and the STDOUT from the
command will be included verbatim on the about page. Default value:
none.
agefile:: agefile::
Specifies a path, relative to each repository path, which can be used Specifies a path, relative to each repository path, which can be used
to specify the date and time of the youngest commit in the repository. to specify the date and time of the youngest commit in the repository.
@@ -234,6 +241,9 @@ virtual-root::
REPOSITORY SETTINGS REPOSITORY SETTINGS
------------------- -------------------
repo.about-filter::
Override the default about-filter. Default value: <about-filter>.
repo.clone-url:: repo.clone-url::
A list of space-separated urls which can be used to clone this repo. A list of space-separated urls which can be used to clone this repo.
Default value: none. Default value: none.

Zobrazit soubor

@@ -62,6 +62,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
ret->module_link = ctx.cfg.module_link; ret->module_link = ctx.cfg.module_link;
ret->readme = NULL; ret->readme = NULL;
ret->mtime = -1; ret->mtime = -1;
ret->about_filter = ctx.cfg.about_filter;
ret->commit_filter = ctx.cfg.commit_filter; ret->commit_filter = ctx.cfg.commit_filter;
ret->source_filter = ctx.cfg.source_filter; ret->source_filter = ctx.cfg.source_filter;
return ret; return ret;

Zobrazit soubor

@@ -273,6 +273,11 @@ void cgit_print_repolist()
void cgit_print_site_readme() void cgit_print_site_readme()
{ {
if (ctx.cfg.root_readme) if (!ctx.cfg.root_readme)
html_include(ctx.cfg.root_readme); return;
if (ctx.cfg.about_filter)
cgit_open_filter(ctx.cfg.about_filter);
html_include(ctx.cfg.root_readme);
if (ctx.cfg.about_filter)
cgit_close_filter(ctx.cfg.about_filter);
} }

Zobrazit soubor

@@ -83,6 +83,10 @@ void cgit_print_repo_readme(char *path)
} else } else
tmp = ctx.repo->readme; tmp = ctx.repo->readme;
html("<div id='summary'>"); html("<div id='summary'>");
if (ctx.repo->about_filter)
cgit_open_filter(ctx.repo->about_filter);
html_include(tmp); html_include(tmp);
if (ctx.repo->about_filter)
cgit_close_filter(ctx.repo->about_filter);
html("</div>"); html("</div>");
} }