Mercurial > treepkg
view bin/publishstaticweb.py @ 441:eadcb1bb54e2
Merged revisions 388-399 via svnmerge from
svn+ssh://svn.wald.intevation.org/treepkg/branches/treepkg-status
........
r388 | bricks | 2010-07-28 10:38:50 +0200 (Mi, 28 Jul 2010) | 3 lines
fix if statement
upload hook should be called if it's not empty
........
r389 | bricks | 2010-07-28 13:38:00 +0200 (Mi, 28 Jul 2010) | 2 lines
only rsync specified architectures from cachedir to publishdir
........
r390 | bricks | 2010-07-29 14:07:57 +0200 (Do, 29 Jul 2010) | 2 lines
introduced after_copy_hook and made rsync upload to publishdir optional
........
r391 | bricks | 2010-07-29 15:43:39 +0200 (Do, 29 Jul 2010) | 3 lines
publish package must be default to get original behaviour
be more verbose at publishing
........
r392 | bricks | 2010-07-29 16:50:53 +0200 (Do, 29 Jul 2010) | 2 lines
fix handling of showing only successfull builds together with num packages
........
r393 | bricks | 2010-07-29 16:52:42 +0200 (Do, 29 Jul 2010) | 2 lines
fixed typo
........
r394 | bricks | 2010-07-29 16:59:10 +0200 (Do, 29 Jul 2010) | 2 lines
fixed another typo
........
r395 | bricks | 2010-07-29 18:05:54 +0200 (Do, 29 Jul 2010) | 3 lines
fixed another typo
treepkg is really slow with many revisions
........
r396 | bricks | 2010-08-02 12:41:55 +0200 (Mo, 02 Aug 2010) | 2 lines
fixed typos
........
r397 | bricks | 2010-08-02 17:36:12 +0200 (Mo, 02 Aug 2010) | 3 lines
be more error prone in listing different files
not checking if a dir exists caused several errors if a build wasn't successful
........
r398 | bricks | 2010-08-05 18:21:47 +0200 (Do, 05 Aug 2010) | 2 lines
review changes
........
r399 | bricks | 2010-08-06 13:06:08 +0200 (Fr, 06 Aug 2010) | 4 lines
cleanup modules
fix test_info testcases
added testcases for remove_trailingslashes and expand_filename
........
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 06 Aug 2010 13:41:54 +0000 |
parents | ef87d30468b6 |
children | bccd69dedbe5 |
line wrap: on
line source
#! /usr/bin/python # Copyright (C) 2007, 2008, 2009 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 sys import os from optparse import OptionParser from ConfigParser import SafeConfigParser import treepkgcmd from treepkg.readconfig import read_config_section from treepkg.run import call from treepkg.cmdexpand import cmdexpand from treepkg.util import ensure_directory def remove_trailing_slashes(s): return s.rstrip("/") def expand_filename(filename): """ Applies os.path.expanduser and os.path.expandvars to filename """ return os.path.expandvars(os.path.expanduser(filename)) staticweb_desc = ["build_user", "build_host", "build_create", "build_template", "build_logs", ("build_dir", remove_trailing_slashes), "publish_user", "publish_host", ("publish_dir", remove_trailing_slashes), ("cachedir", lambda s: expand_filename(remove_trailing_slashes(s)))] #Default values for the configuration options can be set here staticweb_defaults = [("build_logs", "build_log.txt.gz")] def read_config(filename): parser = SafeConfigParser() parser.add_section("staticweb") for value in staticweb_defaults: parser.set("staticweb", value[0], value[1]) parser.read([filename]) return read_config_section(parser, "staticweb", staticweb_desc) def parse_commandline(): parser = OptionParser() parser.set_defaults(config_file=os.path.join(treepkgcmd.topdir, "staticweb.cfg")) parser.set_defaults(update_cache_only=False) parser.add_option("--config-file", help=("The configuration file. Default is staticweb.cfg")) parser.add_option("--update-cache-only", action="store_true", help=("Stop after updating the cache." " This omits the last step of the publishing" " process")) return parser.parse_args() def publish_static_site(config_filename, update_cache_only=False): config = read_config(config_filename) # create web-page on build host call(cmdexpand("ssh $build_user$@$build_host $build_create" " --show-logs=$build_logs" " --status-template=$build_template $build_dir", **config)) # rsync the new web-pages to the local cache ensure_directory(config["cachedir"]) call(cmdexpand("rsync -rL --delete $build_user$@$build_host:$build_dir/" " $cachedir", **config)) if not update_cache_only: # 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, options.update_cache_only) main()