aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-10-26 11:40:28 +0100
committerAdrian Kummerlaender2014-10-26 11:40:28 +0100
commit0d0e34feb65ba998f8b1df06b498de3f56ea6b7e (patch)
treebf404e95a5abb1ac95c7c638e112ca8d4e812171
parentee1786edd7972f9ff55fc8abb90a6d981d66998e (diff)
downloadOverview-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`
-rw-r--r--source/00_content/meta.xml5
-rw-r--r--source/00_content/repositories.xml14
-rw-r--r--source/01_raw/repository_feeds.xsl (renamed from source/01_raw/commits.xsl)12
-rw-r--r--source/02_augment/commits.xsl51
-rw-r--r--source/99_result/repository/atom.xsl81
-rw-r--r--source/99_result/timeline.xsl15
-rwxr-xr-xutility/fetch_feed.sh3
-rw-r--r--utility/formatter.xsl19
-rwxr-xr-xutility/git_log.sh7
-rw-r--r--utility/reference_commit.xsl2
-rw-r--r--utility/remove_namespace.xsl18
11 files changed, 91 insertions, 136 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>
diff --git a/utility/fetch_feed.sh b/utility/fetch_feed.sh
new file mode 100755
index 0000000..45dbc6c
--- /dev/null
+++ b/utility/fetch_feed.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+curl $1 | sed -e 's~^\([\*]\)\{3\}~\t\t\*~g' -e 's~^\([\*]\)\{2\}~\t\*~g'
diff --git a/utility/formatter.xsl b/utility/formatter.xsl
new file mode 100644
index 0000000..d2c2f7c
--- /dev/null
+++ b/utility/formatter.xsl
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:InputXSLT="function.inputxslt.application"
+ exclude-result-prefixes="InputXSLT"
+>
+
+<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>
+
+</xsl:stylesheet>
diff --git a/utility/git_log.sh b/utility/git_log.sh
deleted file mode 100755
index 4d00552..0000000
--- a/utility/git_log.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-format="<commit hash=\"%h\"><date>%cd</date><message><![CDATA[# %B]]></message></commit>"
-
- git --no-pager -C $1 log -n $2 --date=iso --pretty=tformat:"$format" \
-| tidy --input-xml yes --escape-cdata true --wrap 0 \
-| sed -e 's~^\([\*]\)\{3\}~\t\t\*~g' -e 's~^\([\*]\)\{2\}~\t\*~g'
diff --git a/utility/reference_commit.xsl b/utility/reference_commit.xsl
index 63cb064..3423cd9 100644
--- a/utility/reference_commit.xsl
+++ b/utility/reference_commit.xsl
@@ -20,6 +20,6 @@
</xsl:copy>
</xsl:template>
-<xsl:template match="message | date | text()" mode="commit"/>
+<xsl:template match="title | message | date | author | link | text()" mode="commit"/>
</xsl:stylesheet>
diff --git a/utility/remove_namespace.xsl b/utility/remove_namespace.xsl
new file mode 100644
index 0000000..6775901
--- /dev/null
+++ b/utility/remove_namespace.xsl
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+>
+
+<xsl:template match="*" mode="remove_namespace">
+ <xsl:element name="{local-name()}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates select="node()" mode="remove_namespace"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="comment() | processing-instruction()" mode="remove_namespace">
+ <xsl:copy/>
+</xsl:template>
+
+</xsl:stylesheet>