diff options
author | Adrian Kummerlaender | 2014-10-26 11:40:28 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2014-10-26 11:40:28 +0100 |
commit | 0d0e34feb65ba998f8b1df06b498de3f56ea6b7e (patch) | |
tree | bf404e95a5abb1ac95c7c638e112ca8d4e812171 /source | |
parent | ee1786edd7972f9ff55fc8abb90a6d981d66998e (diff) | |
download | Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar.gz Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar.bz2 Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar.lz Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar.xz Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.tar.zst Overview-0d0e34feb65ba998f8b1df06b498de3f56ea6b7e.zip |
Replaced local Git log extraction with CGit ATOM feeds
* I just realized that repository specific commit feeds are already provided by both CGit and GitHub
** i.e. I made the mistake of not checking if my current system already provides the required functionality when I wanted to aggregate my commits and found this to be a use case for StaticXSLT
* feeds are fetched via `curl`
** this will be a local request in production
** the messages are still cleaned using `sed` and transformed into _XHTML_ using `peg-markdown`
* instead of reading a customized Git log output CommitLog now simply transforms CGit ATOM feeds using identity templates
** this requires ATOM namespace removal which is implemented in `utility/remove_namespace.xsl`
Diffstat (limited to 'source')
-rw-r--r-- | source/00_content/meta.xml | 5 | ||||
-rw-r--r-- | source/00_content/repositories.xml | 14 | ||||
-rw-r--r-- | source/01_raw/repository_feeds.xsl (renamed from source/01_raw/commits.xsl) | 12 | ||||
-rw-r--r-- | source/02_augment/commits.xsl | 51 | ||||
-rw-r--r-- | source/99_result/repository/atom.xsl | 81 | ||||
-rw-r--r-- | source/99_result/timeline.xsl | 15 |
6 files changed, 50 insertions, 128 deletions
diff --git a/source/00_content/meta.xml b/source/00_content/meta.xml index 56bbb9d..869431b 100644 --- a/source/00_content/meta.xml +++ b/source/00_content/meta.xml @@ -3,9 +3,4 @@ <title>CommitLog</title> <url>http://localhost:8000</url> <commit_count>20</commit_count> - - <mirror> - <repository>http://code.kummerlaender.eu</repository> - <commit>commit/?id=</commit> - </mirror> </datasource> diff --git a/source/00_content/repositories.xml b/source/00_content/repositories.xml index d7b0f05..6f0cbfd 100644 --- a/source/00_content/repositories.xml +++ b/source/00_content/repositories.xml @@ -1,24 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <datasource> <entry handle="InputXSLT"> - <path>~/projects/dev/InputXSLT</path> + <feed>http://code.kummerlaender.eu/InputXSLT/atom/?h=master</feed> </entry> <entry handle="blog.kummerlaender.eu"> - <path>~/projects/dev/blog.kummerlaender.eu</path> + <feed>http://code.kummerlaender.eu/blog.kummerlaender.eu/atom/?h=master</feed> </entry> <entry handle="SimpleParser"> - <path>~/projects/dev/parser</path> + <feed>http://code.kummerlaender.eu/SimpleParser/atom/?h=master</feed> </entry> <entry handle="StaticXSLT"> - <path>~/projects/dev/StaticXSLT</path> + <feed>http://code.kummerlaender.eu/StaticXSLT/atom/?h=master</feed> </entry> <entry handle="BuildXSLT"> - <path>~/projects/dev/BuildXSLT</path> + <feed>http://code.kummerlaender.eu/BuildXSLT/atom/?h=master</feed> </entry> <entry handle="GraphStorage"> - <path>~/projects/dev/graphdb</path> + <feed>http://code.kummerlaender.eu/GraphStorage/atom/?h=master</feed> </entry> <entry handle="BinaryMapping"> - <path>~/projects/dev/BinaryMapping</path> + <feed>http://code.kummerlaender.eu/BinaryMapping/atom/?h=master</feed> </entry> </datasource> diff --git a/source/01_raw/commits.xsl b/source/01_raw/repository_feeds.xsl index b5fe201..24cc2d8 100644 --- a/source/01_raw/commits.xsl +++ b/source/01_raw/repository_feeds.xsl @@ -7,18 +7,18 @@ > <xsl:include href="[utility/datasource.xsl]"/> +<xsl:include href="[utility/remove_namespace.xsl]"/> <xsl:variable name="meta"> - <datasource type="main" mode="full" source="00_content/repositories.xml" target="repositories"/> - <datasource type="support" mode="full" source="00_content/meta.xml" target="meta"/> - <target mode="plain" value="commits.xml"/> + <datasource type="main" mode="full" source="00_content/repositories.xml" target="repositories"/> + <target mode="plain" value="repository_feeds.xml"/> </xsl:variable> <xsl:template match="repositories/entry"> <entry handle="{@handle}"> - <xsl:copy-of select="InputXSLT:external-command( - concat('./utility/git_log.sh ', path, ' ', $root/meta/commit_count) - )/self::command/commit"/> + <xsl:apply-templates mode="remove_namespace" select="InputXSLT:external-command( + concat('./utility/fetch_feed.sh ', feed/text()) + )/self::command/feed/entry"/> </entry> </xsl:template> diff --git a/source/02_augment/commits.xsl b/source/02_augment/commits.xsl index 27f9bcd..7f17240 100644 --- a/source/02_augment/commits.xsl +++ b/source/02_augment/commits.xsl @@ -2,49 +2,66 @@ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:InputXSLT="function.inputxslt.application" - exclude-result-prefixes="InputXSLT" > <xsl:include href="[utility/datasource.xsl]"/> +<xsl:include href="[utility/formatter.xsl]"/> <xsl:variable name="meta"> - <datasource type="main" mode="full" source="01_raw/commits.xml" target="repositories"/> + <datasource type="main" mode="full" source="01_raw/repository_feeds.xml" target="repositories"/> <target mode="plain" value="commits.xml"/> </xsl:variable> -<xsl:template name="formatter"> - <xsl:param name="format"/> - <xsl:param name="source"/> - - <xsl:copy-of select="InputXSLT:external-command( - $format, - $source - )/self::command/node()"/> +<xsl:template match="entry" mode="commit"> + <commit hash="{id}"> + <xsl:apply-templates select="@*|node()" mode="commit"/> + </commit> </xsl:template> -<xsl:template match="date" mode="commit"> +<xsl:template match="id" mode="commit"/> +<xsl:template match="updated" mode="commit"/> +<xsl:template match="content[@type = 'xhtml']" mode="commit"/> + +<xsl:template match="author" mode="commit"> <xsl:copy> + <xsl:value-of select="name"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="published" mode="commit"> + <date> <xsl:attribute name="time"> <xsl:value-of select="substring(text(), 12, 5)"/> </xsl:attribute> <xsl:apply-templates select="@*|node()" mode="commit"/> - </xsl:copy> + </date> </xsl:template> -<xsl:template match="date/text()" mode="commit"> +<xsl:template match="published/text()" mode="commit"> <xsl:value-of select="substring(., 0, 11)"/> </xsl:template> -<xsl:template match="message/text()" mode="commit"> +<xsl:template match="link" mode="commit"> + <link> + <xsl:value-of select="@href"/> + </link> +</xsl:template> + +<xsl:template match="content[@type = 'text']" mode="commit"> + <message> + <xsl:apply-templates select="node()" mode="commit"/> + </message> +</xsl:template> + +<xsl:template match="content[@type = 'text']/text()" mode="commit"> <xsl:call-template name="formatter"> <xsl:with-param name="format">markdown</xsl:with-param> <xsl:with-param name="source" select="."/> </xsl:call-template> </xsl:template> -<xsl:template match="@*|node()" mode="commit"> +<xsl:template match="@* | node()" mode="commit"> <xsl:copy> <xsl:apply-templates select="@*|node()" mode="commit"/> </xsl:copy> @@ -52,7 +69,7 @@ <xsl:template match="repositories/entry"> <entry handle="{@handle}"> - <xsl:apply-templates select="commit" mode="commit"/> + <xsl:apply-templates select="entry" mode="commit"/> </entry> </xsl:template> diff --git a/source/99_result/repository/atom.xsl b/source/99_result/repository/atom.xsl deleted file mode 100644 index f858dea..0000000 --- a/source/99_result/repository/atom.xsl +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet - version="1.0" - xmlns="http://www.w3.org/2005/Atom" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" -> - -<xsl:output - method="xml" - omit-xml-declaration="no" - encoding="UTF-8" - indent="no" -/> - -<xsl:include href="[utility/xhtml.xsl]"/> - -<xsl:variable name="meta"> - <datasource type="main" mode="iterate" source="02_augment/commits.xml" target="repository"/> - <datasource type="support" mode="full" source="00_content/meta.xml" target="meta"/> - <target mode="xpath" value="concat($datasource/repository/entry/@handle, '.xml')"/> -</xsl:variable> - -<xsl:variable name="root" select="/datasource"/> -<xsl:variable name="title" select="datasource/repository/entry/@handle"/> -<xsl:variable name="url" select="concat($root/meta/url, '/feed/', $title, '.xml')"/> -<xsl:variable name="latest" select="repository/entry/commit[1]"/> - -<xsl:template match="datasource"> - <feed> - <link href="{$url}" rel="self" title="{$title}" type="application/atom+xml"/> - - <id> - <xsl:value-of select="$url"/> - </id> - <title> - <xsl:value-of select="$title"/> - </title> - <updated> - <xsl:value-of select="$latest/date"/> - <xsl:text>T</xsl:text> - <xsl:value-of select="$latest/date/@time"/> - <xsl:text>:00+02:00</xsl:text> - </updated> - - <xsl:apply-templates select="repository/entry/commit"/> - </feed> -</xsl:template> - -<xsl:template match="repository/entry/commit"> - <entry xmlns="http://www.w3.org/2005/Atom"> - <id> - <xsl:value-of select="@hash"/> - </id> - <title> - <xsl:value-of select="message/h1"/> - </title> - <link rel="alternate" title="{@hash}"> - <xsl:attribute name="href"> - <xsl:value-of select="concat( - $root/meta/mirror/repository, '/', - ../@handle, '/', - $root/meta/mirror/commit, - @hash - )"/> - </xsl:attribute> - </link> - <content type="xhtml"> - <div xmlns="http://www.w3.org/1999/xhtml"> - <xsl:apply-templates select="message/*[name() != 'h1']" mode="xhtml"/> - </div> - </content> - <updated> - <xsl:value-of select="date"/> - <xsl:text>T</xsl:text> - <xsl:value-of select="date/@time"/> - <xsl:text>:00+02:00</xsl:text> - </updated> - </entry> -</xsl:template> - -</xsl:stylesheet> diff --git a/source/99_result/timeline.xsl b/source/99_result/timeline.xsl index 4793e8c..dfcca01 100644 --- a/source/99_result/timeline.xsl +++ b/source/99_result/timeline.xsl @@ -44,21 +44,12 @@ <xsl:value-of select="$hash"/> </id> <title> - <xsl:value-of select="$commit/message/h1"/> + <xsl:value-of select="$commit/title"/> </title> - <link rel="alternate" title="{@hash}"> - <xsl:attribute name="href"> - <xsl:value-of select="concat( - $root/meta/mirror/repository, '/', - $repository, '/', - $root/meta/mirror/commit, - $hash - )"/> - </xsl:attribute> - </link> + <link rel="alternate" title="{$commit/title}" href="{$commit/link}"/> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> - <xsl:apply-templates select="$commit/message/*[name() != 'h1']" mode="xhtml"/> + <xsl:apply-templates select="$commit/message/*" mode="xhtml"/> </div> </content> <updated> |