blog: Add financial Results for 2015
[gnupg-doc.git] / misc / blog.gnupg.org / upload
1 #!/bin/sh
2
3 set -e
4
5 opt_upload=yes
6 if [ x"$1" = x"--no-upload" ]; then
7   opt_upload=no
8 fi
9
10
11 if [ "$(pwd  | awk -F/ '{print $NF}')" != "blog.gnupg.org" ]; then
12   echo "upload: not invoked from the blog.gnupg.org directory" >&2;
13   exit 1
14 fi
15
16 echo "upload: Rendering entries" >&2
17 # We need to initialize that org cache to use our own publish function
18 # despite that we do not use any org-publish feature
19 emacs23 --batch \
20   --eval "(require 'assoc)" \
21   --eval "(require 'org)" \
22   --eval "(setq gpgweb-root-dir \"$(cd ../../web && pwd)/\")" \
23   --eval "(require 'gpgweb (concat gpgweb-root-dir \"share/gpgweb.el\"))" \
24   --eval "(setq org-publish-use-timestamps-flag nil)" \
25   --eval "(setq org-export-html-toplevel-hlevel 1)" \
26   --eval "(setq org-export-html-coding-system 'utf-8)" \
27   --eval "(gpgweb-setup-project)" \
28   --eval "(org-publish-initialize-cache \"gpgweb\")" \
29   --eval "(gpgweb-publish-blogs)"
30
31 if [ ! -f index.html ]; then
32   echo "upload: index.html has not yet been build" >&2;
33   exit 1
34 fi
35
36 # Find all rendered HTML files but skip possible translated versions.
37 find . -maxdepth 1 -type f -name "20*.html" -print \
38     | grep -v '\.[a-z][a-z].html$' | sort -r >index.tmp
39 newest=$(head -1 index.tmp)
40
41 # Extract the head lines
42 : >index.headlines.tmp
43 cat index.tmp | while read fname; do
44   echo -n "${fname#./}|" >>index.headlines.tmp
45   sed  -n '/^<h2 id=/ {s,^<[^>]*>\(.*\)</h2>,\1,p;q}' \
46        $fname >>index.headlines.tmp
47 done
48
49 # Update the index file
50 echo "upload: Updating index.html" >&2
51 awk -F:  <index.html  >index.tmp \
52     -v newest=${newest#./} '
53      /<!--BEGIN-NEWEST-ENTRY-->/ {indon=1; print; insertnewest() }
54      /<!--END-NEWEST-ENTRY-->/ {indon=0}
55      /<!--BEGIN-BLOG-INDEX-->/ {indon=1; print; insertindex() }
56      /<!--END-BLOG-INDEX-->/   {indon=0}
57      !indon { print }
58
59      function insertnewest () {
60        inblog = 0
61        while (getline < newest) {
62          if (match ($0, /^<main>/))  { inblog = 1; continue; }
63          if (match ($0, /^<\/main>/)) { inblog = 0; break; }
64          if (! inblog) { continue }
65          if (match ($0, /^<div id="content">/)) { continue; }
66          if (match ($0, /^<\/div><!-- end content -->/)) { continue; }
67          print $0
68        }
69       close(newest)
70      }
71
72      function insertindex (tag) {
73        file = "index.headlines.tmp";
74        print "<ul>"
75        while (getline < file) {
76          split($0, a, "|")
77          printf "  <li><a href=\"%s\">%s</a>\n", a[1], a[2];
78        }
79        print "</ul>"
80        close (file)
81      }
82      '
83 mv index.tmp index.html || echo "upload: error updating index.html" >&2
84
85 # Update the feed file
86 echo "upload: Updating feed file" >&2
87
88
89
90 # Rename headlines file
91 mv index.headlines.tmp headlines.txt
92
93 if [ $opt_upload = yes ]; then
94   echo "upload: Uploading files" >&2
95   rsync -vr --links --exclude '*~' --exclude upload --exclude '*tmp' \
96      --exclude '*.org' \
97      . werner@trithemius.gnupg.org:/var/www/www/www.gnupg.org/misc/blog/
98 fi
99
100 #eof