Mercurial > treepkg
annotate bin/runtreepkg.py @ 282:f58f9adb7dc3
Add functions to get SVN logs and extract tag revisions from it. Add
some tests for the log parsing.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Tue, 04 Aug 2009 10:09:12 +0000 |
parents | 94fb3f3ab58b |
children | 1fcdffbeb9de |
rev | line source |
---|---|
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
1 #! /usr/bin/python2.4 |
190
e83db4482aab
Add runtreepkg.py command line option --no-svn-update to inhibit updates
Bernhard Herzog <bh@intevation.de>
parents:
81
diff
changeset
|
2 # Copyright (C) 2007, 2008 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 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
30 def parse_commandline(): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
31 parser = create_parser() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
32 parser.add_option("--once", action="store_true", |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
33 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
|
34 " Without this option, the tree packager will" |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
35 " check periodically.")) |
81
2630a1c18816
Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
36 parser.add_option("--revision", |
2630a1c18816
Add command line option --revision to package a specific revision.
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
37 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
|
38 " 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
|
39 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
|
40 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
|
41 " attempting to package.")) |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
42 return parser.parse_args() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
43 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
44 def main(): |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
45 options, args = parse_commandline() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
46 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
47 initialize_logging() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
48 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
49 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
|
50 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
51 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
|
52 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
|
53 else: |
94fb3f3ab58b
When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents:
190
diff
changeset
|
54 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
|
55 |
94fb3f3ab58b
When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents:
190
diff
changeset
|
56 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
|
57 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
|
58 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
|
59 selected_tracks.discard(name) |
94fb3f3ab58b
When building a subset of tracks, make sure new packages are added to
Bernhard Herzog <bh@intevation.de>
parents:
190
diff
changeset
|
60 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
|
61 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
|
62 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
63 if packager_opts: |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
64 group = PackagerGroup([create_package_track(**opts) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
65 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
|
66 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
|
67 do_svn_update=not options.no_svn_update, |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
68 **treepkg_opts) |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
69 if options.once: |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
70 group.check_package_tracks() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
71 else: |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
72 group.run() |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
73 |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
74 main() |