view bin/listpackages.py @ 232:e3cda08d2619

When checking whether to build a new revision, also update the rules working copy, use it's revision too when comparing the current revision with the already built revisions and use it when building a new revision. Update the tests for this. Part of this change is that now, the default revision for the rules is 0 not 1 as previously. To avoid extra builds, existing treepkg instances will have to be updated so that the directories end in -0 not -1. There will be a tool to help with this.
author Bernhard Herzog <bh@intevation.de>
date Tue, 13 Jan 2009 15:01:22 +0000
parents 24d119c27150
children 59e2d8e26635
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.

"""List the absolute filenames of packages created by treepkg"""

import sys

import treepkgcmd
from treepkg.options import create_parser
from treepkg.report import get_packager_group

def parse_commandline():
    parser = create_parser()
    parser.set_defaults(binary=False, source=False)
    parser.add_option("--revision", type="int",
                      help=("The revision whose files are to be listed."
                            " If not given, the latest revision is used"))
    parser.add_option("--track",
                      help=("The package track whose files are to be listed."
                            " If not given, files of all tracks are listed."))
    parser.add_option("--source", action="store_true",
                      help=("List source packages"))
    parser.add_option("--binary", action="store_true",
                      help=("List binary packages"))
    return parser.parse_args()


def list_track_packages(track, revision, source, binary):
    revisions = track.get_revisions()
    if not revisions:
        print >>sys.stderr, "No revisions have been packaged"
        sys.exit(1)

    if revision is None:
        revpkg = revisions[-1]
    else:
        for revpkg in revisions:
            if revpkg.revision == revision:
                break
        else:
            revpkg = None

    if revpkg is not None:
        if source:
            for filename in revpkg.list_source_files():
                print filename
        if binary:
            for filename in revpkg.list_binary_files():
                print filename
    else:
        print >>sys.stderr, "No revision", repr(revision)
        sys.exit(1)

def list_packages(config_file, trackname, revision, source, binary):
    group = get_packager_group(config_file)
    tracks = group.get_package_tracks()
    if trackname is not None:
        tracks = [track for track in tracks if track.name == trackname]
        if not tracks:
            print >>sys.stderr, "no track named", trackname
            sys.exit(1)
    for track in tracks:
        list_track_packages(track, revision, source, binary)

def main():
    options, args = parse_commandline()
    list_packages(options.config_file, options.track, options.revision,
                  source=options.source, binary=options.binary)

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