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>
Esse commit está contido em:
Lars Hjemli 2009-08-09 13:27:21 +02:00
commit 537c05f138
6 arquivos alterados com 28 adições e 2 exclusões

4
cgit.c
Ver arquivo

@ -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
Ver arquivo

@ -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;
}; };

Ver arquivo

@ -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.

Ver arquivo

@ -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;

Ver arquivo

@ -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);
} }

Ver arquivo

@ -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>");
} }