view bin/runtreepkg.py @ 253:7d932fac1055

Add --newest=N option to listpackages to get more than one newest revision. Add corresponding tests.
author Bernhard Herzog <bh@intevation.de>
date Tue, 14 Apr 2009 12:45:12 +0000
parents 94fb3f3ab58b
children 1fcdffbeb9de
line wrap: on
line source
#! /usr/bin/python2.4
# Copyright (C) 2007, 2008 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 parse_commandline():
    parser = create_parser()
    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("--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."))
    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)
    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,
                              **treepkg_opts)
        if options.once:
            group.check_package_tracks()
        else:
            group.run()

main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)