Mercurial > treepkg
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() |