jenkins: include local bin directory in PATH
[gnupg-doc.git] / misc / blog.gnupg.org / update-index.sh
1 #!/bin/sh
2 # Insert the ctual index into index.html
3
4 pgm=update-index.sh
5
6 if [ ! -f index.html ]; then
7   echo "$pgm: blog.gnupg.org/index.html has not been build" >&2
8   exit 1
9 fi
10
11 # Find all rendered HTML files but skip possible translated versions.
12 find . -maxdepth 1 -type f -name "20*.html" -print \
13     | grep -v '\.[a-z][a-z].html$' | sort -r >index.tmp
14 newest=$(head -1 index.tmp)
15
16 # Extract the head lines
17 : >index.headlines.tmp
18 cat index.tmp | while read fname; do
19   echo -n "${fname#./}|" >>index.headlines.tmp
20   sed  -n '/^<h2 id=/ {s,^<[^>]*>\(.*\)</h2>,\1,p;q}' \
21        $fname >>index.headlines.tmp
22 done
23
24 # Update the index file
25 awk -F:  <index.html  >index.tmp \
26   -v newest=${newest#./} '
27    /<!--BEGIN-NEWEST-ENTRY-->/ {indon=1; print; insertnewest() }
28    /<!--END-NEWEST-ENTRY-->/ {indon=0}
29    /<!--BEGIN-BLOG-INDEX-->/ {indon=1; print; insertindex() }
30    /<!--END-BLOG-INDEX-->/   {indon=0}
31    !indon { print }
32
33    function insertnewest () {
34      inblog = 0
35      while (getline < newest) {
36        if (match ($0, /^<main>/))  { inblog = 1; continue; }
37        if (match ($0, /^<\/main>/)) { inblog = 0; break; }
38        if (! inblog) { continue }
39        if (match ($0, /^<div id="content">/)) { continue; }
40        if (match ($0, /^<\/div><!-- end content -->/)) { continue; }
41        print $0
42      }
43     close(newest)
44    }
45
46    function insertindex (tag) {
47      file = "index.headlines.tmp";
48      print "<ul>"
49      while (getline < file) {
50        split($0, a, "|")
51        printf "  <li><a href=\"%s\">%s</a>\n", a[1], a[2];
52      }
53      print "</ul>"
54      close (file)
55    }
56    '
57 if ! mv index.tmp index.html ; then
58     echo "$pgm: error updating blog index" >&2
59     exit 1
60 fi
61
62 # FIXME: Create a feed file
63
64 # Rename headlines file
65 mv index.headlines.tmp headlines.txt
66
67 exit 0