Mercurial > treepkg
view bin/runtreepkg.py @ 474:a8f77807d710
sawmill: create links for tag builds
author | Sascha Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 10 Sep 2010 14:18:07 +0000 |
parents | 5f442b0cf3a4 |
children | de78084fcbce |
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. """Starts the tree packager""" import sys import os import logging from optparse import OptionParser import treepkgcmd from treepkg.options import create_parser from treepkg.packager import create_package_track, PackagerGroup from treepkg.readconfig import read_config def initialize_logging(): """Initializes the logging system""" root = logging.getLogger() root.setLevel(logging.DEBUG) hdlr = logging.StreamHandler() fmt = logging.Formatter("%(asctime)s %(levelname)s %(message)s") hdlr.setFormatter(fmt) root.addHandler(hdlr) def handle_track_option(option, opt_str, value, parser): parsed_options = parser.values.track_options track_optname, value = value.split("=", 1) trackname, optname = track_optname.split(".") track_options = parsed_options.setdefault(trackname, dict()) track_options[optname] = value def parse_commandline(): parser = create_parser() parser.set_defaults(track_options=dict()) parser.add_option("--once", action="store_true", help=("Check the packagers only once and exit afterwards." " Without this option, the tree packager will" " check periodically.")) parser.add_option("--stop-on-error", action="store_true", help=("Stop the tree packager when a packaging" " attempt fails.")) parser.add_option("--revision", help=("SVN revision to update to before attempting" " to package.")) parser.add_option("--no-svn-update", action="store_true", help=("Do not update the SVN workingcopy before" " attempting to package.")) parser.add_option("--track-option", action="callback", type="string", callback=handle_track_option, help=("Sets a track-specific option." " The argument should be of the form" " TRACKNAME.OPTION=VALUE")) return parser.parse_args() def main(): options, args = parse_commandline() initialize_logging() treepkg_opts, packager_opts = read_config(options.config_file) if args: selected_tracks = set(args) else: selected_tracks = set(opts["name"] for opts in packager_opts) for opts in packager_opts: name = opts["name"] opts["do_build"] = name in selected_tracks selected_tracks.discard(name) if name in options.track_options: opts.update(options.track_options[name]) for name in selected_tracks: print >>sys.stderr, "No package track found named %r" % name if packager_opts: group = PackagerGroup([create_package_track(**opts) for opts in packager_opts], revision=options.revision, do_svn_update=not options.no_svn_update, stop_on_error=options.stop_on_error, **treepkg_opts) if options.once: group.check_package_tracks() else: group.run() main()