summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2018-06-13 10:01:40 +0800
committerChristian Hesse <mail@eworm.de>2018-06-13 10:32:44 +0200
commit5b3d936c18c2badba2738122da99a22d32555fe1 (patch)
tree6fd02ec5bfb9e6babb56ca3df3235bd5d1c3c605
parentdc4651f15e34a9a1039039c87fd20cf10d7f11e9 (diff)
downloadcgit-5b3d936c18c2badba2738122da99a22d32555fe1.tar.gz
Add source page
We are about to introduce rendering of content for the tree view. This source page will allow bypassing the renderer and accessing the content of the current tree view. Signed-off-by: John Keeping <john@keeping.me.uk>
-rw-r--r--cmd.c6
-rw-r--r--ui-shared.c10
-rw-r--r--ui-shared.h3
3 files changed, 19 insertions, 0 deletions
diff --git a/cmd.c b/cmd.c
index 63f0ae5..56e21df 100644
--- a/cmd.c
+++ b/cmd.c
@@ -138,6 +138,11 @@ static void refs_fn(void)
cgit_print_refs();
}
+static void source_fn(void)
+{
+ cgit_print_tree(ctx.qry.sha1, ctx.qry.path);
+}
+
static void snapshot_fn(void)
{
cgit_print_snapshot(ctx.qry.head, ctx.qry.sha1, ctx.qry.path,
@@ -187,6 +192,7 @@ struct cgit_cmd *cgit_get_cmd(void)
def_cmd(refs, 1, 0, 0),
def_cmd(repolist, 0, 0, 0),
def_cmd(snapshot, 1, 0, 0),
+ def_cmd(source, 1, 1, 0),
def_cmd(stats, 1, 1, 0),
def_cmd(summary, 1, 0, 0),
def_cmd(tag, 1, 0, 0),
diff --git a/ui-shared.c b/ui-shared.c
index 9d8f66b..f358a68 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -298,6 +298,12 @@ void cgit_tree_link(const char *name, const char *title, const char *class,
reporevlink("tree", name, title, class, head, rev, path);
}
+void cgit_source_link(const char *name, const char *title, const char *class,
+ const char *head, const char *rev, const char *path)
+{
+ reporevlink("source", name, title, class, head, rev, path);
+}
+
void cgit_plain_link(const char *name, const char *title, const char *class,
const char *head, const char *rev, const char *path)
{
@@ -480,6 +486,10 @@ static void cgit_self_link(char *name, const char *title, const char *class)
cgit_tree_link(name, title, class, ctx.qry.head,
ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
ctx.qry.path);
+ else if (!strcmp(ctx.qry.page, "source"))
+ cgit_source_link(name, title, class, ctx.qry.head,
+ ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
+ ctx.qry.path);
else if (!strcmp(ctx.qry.page, "plain"))
cgit_plain_link(name, title, class, ctx.qry.head,
ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,
diff --git a/ui-shared.h b/ui-shared.h
index b760a17..5923aaf 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -23,6 +23,9 @@ extern void cgit_tag_link(const char *name, const char *title,
extern void cgit_tree_link(const char *name, const char *title,
const char *class, const char *head,
const char *rev, const char *path);
+extern void cgit_source_link(const char *name, const char *title,
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_plain_link(const char *name, const char *title,
const char *class, const char *head,
const char *rev, const char *path);