changeset 68:57a0b747ea3e

add publishstaticweb.py and demo config file
author Bernhard Herzog <bh@intevation.de>
date Thu, 12 Apr 2007 20:05:18 +0200
parents 517253fa987f
children b52779523392
files demostaticweb.cfg publishstaticweb.py
diffstat 2 files changed, 102 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demostaticweb.cfg	Thu Apr 12 20:05:18 2007 +0200
@@ -0,0 +1,38 @@
+# Demo config file for publishstaticweb.py.  The default config file
+# used by publishstaticweb.py is staticweb.cfg, so to use this file as
+# the basis for your configuration, copy or rename this file and adapt
+# it to your needs.
+
+[staticweb]
+# Username and host on which the treepackager runs.  publishstaticweb.py
+# has to be able to connect to that host as the builduser via ssh
+# without knowning the password.  This is best achieved with the
+# ssh-agent.  Also, publishstaticweb.py uses rsync to copy files from
+# build_host to the local host.
+build_user: builder
+build_host: localhost
+
+# the program to run on build_host to create the static web-page.
+# Currently publishstaticweb.py assumes that the default configuration
+# for that program works.
+build_create: ~/treepackager/createstaticweb.py
+
+# the directory on build_host where the static web-site should be put.
+# This value is used as the parameter to the build_create command on
+# build_host.
+build_dir: /tmp/treepkg-web
+
+# Username and host on which to publish the static pages.
+# publishstaticweb.py uses rsync to copy the files from the local cache
+# to the publish_host.
+publish_user: builder
+publish_host: localhost
+
+# the directory on the publish_host where the web-site resides.  It's
+# the directory where the index.html file will be found.  The script may
+# delete files under that directory.
+publish_dir: /tmp/treepkg-status
+
+# local cache directory.  publishstaticweb.py may delete it and its
+# contents.
+cachedir: /tmp/treepkg-status
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/publishstaticweb.py	Thu Apr 12 20:05:18 2007 +0200
@@ -0,0 +1,64 @@
+#! /usr/bin/python2.4
+# Copyright (C) 2007 by Intevation GmbH
+# Authors:
+# Bernhard Herzog <bh@intevation.de>
+#
+# This program is free software under the GPL (>=v2)
+# Read the file COPYING coming with the software for details.
+
+"""Publishes a static web-site with a status report"""
+
+import os
+from optparse import OptionParser
+from ConfigParser import SafeConfigParser
+
+from treepkg.readconfig import read_config_section
+from treepkg.run import call
+from treepkg.cmdexpand import cmdexpand
+
+def remove_trailing_slashes(s):
+    return s.rstrip("/")
+
+staticweb_desc = ["build_user", "build_host", "build_create",
+                  ("build_dir", remove_trailing_slashes),
+                  "publish_user", "publish_host",
+                  ("publish_dir", remove_trailing_slashes),
+                  ("cachedir", remove_trailing_slashes)]
+
+def read_config(filename):
+    parser = SafeConfigParser()
+    parser.read([filename])
+    return read_config_section(parser, "staticweb", staticweb_desc)
+
+def parse_commandline():
+    parser = OptionParser()
+    dirname = os.path.dirname(__file__)
+    parser.set_defaults(config_file=os.path.join(dirname, "staticweb.cfg"))
+    parser.add_option("--config-file",
+                      help=("The tree packager config file."
+                            " Default staticweb.cfg"))
+    return parser.parse_args()
+
+def publish_static_site(treepkg_config):
+    config = read_config(treepkg_config)
+
+    # create web-page on build host
+    call(cmdexpand("ssh $build_user$@$build_host $build_create $build_dir",
+                   **config))
+
+    # rsync the new web-pages to the local cache
+    call(cmdexpand("rsync -rL --delete $build_user$@$build_host:$build_dir/"
+                   " $cachedir",
+                   **config))
+
+    # rsync the web pages from the local cache to the publishing host
+    call(cmdexpand("rsync -rL --delete $cachedir/"
+                   " $publish_user$@$publish_host:$publish_dir",
+                   **config))
+
+
+def main():
+    options, args = parse_commandline()
+    publish_static_site(options.config_file)
+
+main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)