annotate bin/runtreepkg.py @ 481:9c7e1d957d6b

sawmill: Not all displayed times are in UTC so the general 'Z's at all times/dates are removed. Now it is only mentioned that the times in the main table are in UTC. To reduce the optical noise this is done by simple comments in the date rows.
author Sascha Teichmann <teichmann@intevation.de>
date Sat, 18 Sep 2010 07:50:53 +0000
parents 5f442b0cf3a4
children de78084fcbce
rev   line source
287
1fcdffbeb9de Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents: 191
diff changeset
1 #! /usr/bin/python
1fcdffbeb9de Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents: 191
diff changeset
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
3 # Authors:
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
4 # Bernhard Herzog <bh@intevation.de>
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
5 #
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
6 # This program is free software under the GPL (>=v2)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
7 # Read the file COPYING coming with the software for details.
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
8
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
9 """Starts the tree packager"""
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
10
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
11 import sys
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
12 import os
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
13 import logging
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
14 from optparse import OptionParser
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
15
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
16 import treepkgcmd
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
17 from treepkg.options import create_parser
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
18 from treepkg.packager import create_package_track, PackagerGroup
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
19 from treepkg.readconfig import read_config
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
20
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
21 def initialize_logging():
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
22 """Initializes the logging system"""
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
23 root = logging.getLogger()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
24 root.setLevel(logging.DEBUG)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
25 hdlr = logging.StreamHandler()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
26 fmt = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
27 hdlr.setFormatter(fmt)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
28 root.addHandler(hdlr)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
29
290
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
30 def handle_track_option(option, opt_str, value, parser):
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
31 parsed_options = parser.values.track_options
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
32 track_optname, value = value.split("=", 1)
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
33 trackname, optname = track_optname.split(".")
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
34 track_options = parsed_options.setdefault(trackname, dict())
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
35 track_options[optname] = value
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
36
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
37 def parse_commandline():
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
38 parser = create_parser()
290
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
39 parser.set_defaults(track_options=dict())
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
40 parser.add_option("--once", action="store_true",
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
41 help=("Check the packagers only once and exit afterwards."
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
42 " Without this option, the tree packager will"
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
43 " check periodically."))
307
5f442b0cf3a4 New command line argument --stop-on-error for runtreepkg.py and
Bernhard Herzog <bh@intevation.de>
parents: 290
diff changeset
44 parser.add_option("--stop-on-error", action="store_true",
5f442b0cf3a4 New command line argument --stop-on-error for runtreepkg.py and
Bernhard Herzog <bh@intevation.de>
parents: 290
diff changeset
45 help=("Stop the tree packager when a packaging"
5f442b0cf3a4 New command line argument --stop-on-error for runtreepkg.py and
Bernhard Herzog <bh@intevation.de>
parents: 290
diff changeset
46 " attempt fails."))
81
2630a1c18816 Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents: 78
diff changeset
47 parser.add_option("--revision",
2630a1c18816 Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents: 78
diff changeset
48 help=("SVN revision to update to before attempting"
2630a1c18816 Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents: 78
diff changeset
49 " to package."))
190
e83db4482aab Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents: 81
diff changeset
50 parser.add_option("--no-svn-update", action="store_true",
e83db4482aab Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents: 81
diff changeset
51 help=("Do not update the SVN workingcopy before"
e83db4482aab Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents: 81
diff changeset
52 " attempting to package."))
290
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
53 parser.add_option("--track-option", action="callback", type="string",
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
54 callback=handle_track_option,
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
55 help=("Sets a track-specific option."
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
56 " The argument should be of the form"
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
57 " TRACKNAME.OPTION=VALUE"))
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
58 return parser.parse_args()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
59
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
60 def main():
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
61 options, args = parse_commandline()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
62
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
63 initialize_logging()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
64
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
65 treepkg_opts, packager_opts = read_config(options.config_file)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
66
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
67 if args:
191
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
68 selected_tracks = set(args)
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
69 else:
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
70 selected_tracks = set(opts["name"] for opts in packager_opts)
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
71
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
72 for opts in packager_opts:
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
73 name = opts["name"]
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
74 opts["do_build"] = name in selected_tracks
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
75 selected_tracks.discard(name)
290
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
76 if name in options.track_options:
97c17fb0ca19 Add --track-option command line option to set track-specific options.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
77 opts.update(options.track_options[name])
191
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
78 for name in selected_tracks:
94fb3f3ab58b When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents: 190
diff changeset
79 print >>sys.stderr, "No package track found named %r" % name
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
80
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
81 if packager_opts:
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
82 group = PackagerGroup([create_package_track(**opts)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
83 for opts in packager_opts],
81
2630a1c18816 Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents: 78
diff changeset
84 revision=options.revision,
190
e83db4482aab Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents: 81
diff changeset
85 do_svn_update=not options.no_svn_update,
307
5f442b0cf3a4 New command line argument --stop-on-error for runtreepkg.py and
Bernhard Herzog <bh@intevation.de>
parents: 290
diff changeset
86 stop_on_error=options.stop_on_error,
78
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
87 **treepkg_opts)
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
88 if options.once:
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
89 group.check_package_tracks()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
90 else:
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
91 group.run()
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
92
9a602d8eaa60 initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
93 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)