annotate bin/treepkgbuilder.py @ 567:9d44d4da3411

commands from config files may contain arguments therefore commandparse must split also kw args
author Bjoern Ricks <bricks@intevation.de>
date Fri, 02 Sep 2011 11:04:07 +0000
parents f06f707d9fda
children
rev   line source
287
1fcdffbeb9de Make the #! line in the commands more portable. Use /usr/bin/python
Bernhard Herzog <bh@intevation.de>
parents: 245
diff changeset
1 #! /usr/bin/python
243
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
2 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH
177
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Authors:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 # Bernhard Herzog <bh@intevation.de>
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 #
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # This program is free software under the GPL (>=v2)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7 # Read the file COPYING coming with the software for details.
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 """Usage: treepkgbuilder COMMAND [options]
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 Manage the pbuilder environment for a tree packager installation. The
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 pbuilder settings are taken from the configuration file, either the
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 default treepkg.cfg or the one given with the --config-file option.
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 Also, this script assumes that there is only one pbuilder setting for
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 all packagers. Use treepkgbuilder COMMAND --help for more details about
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 the commands.
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17 """
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 import sys
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 import treepkgcmd
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 from treepkg.options import create_parser
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 from treepkg.packager import create_package_track, PackagerGroup
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 from treepkg.readconfig import read_config
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 class Command(object):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 names = ()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 def __init__(self, arguments):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 parser = self.create_parser()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 self.opts, self.rest = parser.parse_args(arguments)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 def create_parser(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 return create_parser()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 def read_config(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 self.treepkg_opts, self.packager_opts \
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 = read_config(self.opts.config_file)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 def get_builder(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 self.read_config()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 group = PackagerGroup([create_package_track(**opts)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 for opts in self.packager_opts],
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 **self.treepkg_opts)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 track = group.get_package_tracks()[0]
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 return track.builder
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 class InitCommand(Command):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 names = ("init",)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 def __init__(self, arguments):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 super(InitCommand, self).__init__(arguments)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 if self.opts.mirrorsite is None:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 print >>sys.stderr, "Missing required option --mirrorsite"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 sys.exit(1)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 def create_parser(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 parser = super(InitCommand, self).create_parser()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 parser.set_defaults(distribution="etch")
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 parser.add_option("--mirrorsite",
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 help=("The debian mirror site"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 " (pbuilder MIRRORSITE setting). Required."))
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 parser.add_option("--othermirror",
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 help=("Extra contents of the OTHERMIRROR setting."
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 " See the pbuilder documentation for the"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 " format."))
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 parser.add_option("--distribution",
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73 help=("The debian distribution for the pbuilder"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 " chroot. Default is etch."))
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 return parser
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 def run(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 builder = self.get_builder()
344
f06f707d9fda merged branches/scratchbox into trunk
Bjoern Ricks <bricks@intevation.de>
parents: 296
diff changeset
79 builder.init_builder(distribution=self.opts.distribution,
177
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 mirrorsite=self.opts.mirrorsite,
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 extramirrors=self.opts.othermirror)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83
192
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
84 class AddBinariesCommand(Command):
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
85
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
86 names = ("add-binaries",)
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
87
296
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
88 def create_parser(self):
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
89 parser = super(AddBinariesCommand, self).create_parser()
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
90 parser.set_defaults(subdir="manual")
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
91 parser.add_option("--subdir",
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
92 help=("The subdirectory of extra-pkg into which"
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
93 " the packages are to be copied"
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
94 " (default 'manual')."))
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
95 return parser
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
96
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
97
192
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
98 def run(self):
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
99 builder = self.get_builder()
296
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
100 builder.add_binaries_to_extra_pkg(self.rest,
ce7be2fb93ee Make it easy to install extra binaries into subdirectories of extra-pkg.
Bernhard Herzog <bh@intevation.de>
parents: 287
diff changeset
101 subdirectory=self.opts.subdir)
192
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
102
eaadf5350a1a Add the add-binaries command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 184
diff changeset
103
177
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104 class UpdateCommand(Command):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 names = ("update",)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108 def run(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109 builder = self.get_builder()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 builder.update(suppress_output=False, log_info=False)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112
184
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
113 class AddKeyCommand(Command):
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
114
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
115 names = ("addkey", "add-key")
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
116
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
117 def __init__(self, arguments):
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
118 super(AddKeyCommand, self).__init__(arguments)
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
119 if not self.opts.key_id:
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
120 print >>sys.stderr, "No key id given"
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
121 sys.exit(1)
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
122
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
123 def create_parser(self):
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
124 parser = super(AddKeyCommand, self).create_parser()
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
125 parser.add_option("--key-id",
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
126 help=("The id of the key to add. Required."))
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
127 return parser
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
128
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
129 def run(self):
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
130 builder = self.get_builder()
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
131 builder.add_apt_key(self.opts.key_id)
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
132
83c77307ffb1 Add the addkey command to bin/treepkgbuilder.py and a corresponding
Bernhard Herzog <bh@intevation.de>
parents: 177
diff changeset
133
201
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
134 class LoginCommand(Command):
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
135
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
136 names = ("login",)
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
137
213
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
138 def create_parser(self):
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
139 parser = super(LoginCommand, self).create_parser()
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
140 parser.set_defaults(bind_mount=[])
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
141 parser.add_option("--bind-mount", action="append",
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
142 help=("Directories to bind-mount in the chroot"
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
143 " environment."))
245
21da92cea416 Add --save-after-login option to bin/treepkgbuilder.py and corresponding
Bernhard Herzog <bh@intevation.de>
parents: 243
diff changeset
144 parser.add_option("--save-after-login", action="store_true",
21da92cea416 Add --save-after-login option to bin/treepkgbuilder.py and corresponding
Bernhard Herzog <bh@intevation.de>
parents: 243
diff changeset
145 help="Copy changes back to the tarball.")
213
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
146 return parser
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
147
98c5aab790bb Add --bind-mount option to bin/treepkgbuilder.py's login command and a
Bernhard Herzog <bh@intevation.de>
parents: 210
diff changeset
148
201
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
149 def run(self):
245
21da92cea416 Add --save-after-login option to bin/treepkgbuilder.py and corresponding
Bernhard Herzog <bh@intevation.de>
parents: 243
diff changeset
150 self.get_builder().login(bindmounts=self.opts.bind_mount,
21da92cea416 Add --save-after-login option to bin/treepkgbuilder.py and corresponding
Bernhard Herzog <bh@intevation.de>
parents: 243
diff changeset
151 save_after_login=self.opts.save_after_login)
201
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
152
6624e731e218 Add login command to bin/treepkgbuilder.py and corresponding method in
Bernhard Herzog <bh@intevation.de>
parents: 192
diff changeset
153
210
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
154 class BuildCommand(Command):
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
155
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
156 names = ("build",)
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
157
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
158 def create_parser(self):
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
159 parser = super(BuildCommand, self).create_parser()
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
160 parser.add_option("--logfile", help=("The file for the build log."))
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
161 parser.add_option("--binary-dir",
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
162 help=("Directory for the binary packages."))
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
163 return parser
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
164
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
165 def run(self):
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
166 if len(self.rest) != 1:
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
167 print >>sys.stderr, "Exactly one .dsc file must be specified"
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
168 sys.exit(1)
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
169 dsc_file = self.rest[0]
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
170 self.get_builder().build(dsc_file, binary_dir=self.opts.binary_dir,
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
171 logfile=self.opts.logfile)
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
172
63f73bb9c459 Add build command to bin/treepkgbuilder.py
Bernhard Herzog <bh@intevation.de>
parents: 201
diff changeset
173
243
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
174 class ExecuteCommand(Command):
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
175
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
176 names = ("execute",)
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
177
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
178 def create_parser(self):
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
179 parser = super(ExecuteCommand, self).create_parser()
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
180 parser.add_option("--logfile", help=("Log file."))
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
181 parser.add_option("--bind-mount", action="append",
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
182 help=("Directories to bind-mount in the chroot"
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
183 " environment."))
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
184 return parser
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
185
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
186 def run(self):
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
187 if not self.rest:
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
188 print >>sys.stderr, "At least the script file must be specified"
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
189 sys.exit(1)
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
190 script = self.rest
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
191 self.get_builder().run_script(script, bindmounts=self.opts.bind_mount,
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
192 logfile=self.opts.logfile)
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
193
f4a636ed5d07 Add execute command to treepkgbuilder
Bernhard Herzog <bh@intevation.de>
parents: 213
diff changeset
194
177
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
195 class HelpCommand(Command):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
196
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
197 names = ("help", "--help", "-h")
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
198
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
199 def run(self):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
200 print __doc__.rstrip()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
201 print "Supported commands:"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
202 commands = sorted((cmd for cmd in iter_commands() if cmd.names),
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
203 key=lambda cmd: cmd.names[0])
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
204 for cmd in commands:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
205 print " ", " ".join(cmd.names)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
206
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
207
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
208 def iter_commands():
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
209 for key, obj in globals().items():
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
210 if key.endswith("Command"):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
211 yield obj
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
212
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
213 def get_command_class(name):
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
214 for obj in iter_commands():
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
215 if name in obj.names:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
216 return obj
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
217 return None
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
218
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
219
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
220 def main():
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
221 arguments = sys.argv[1:]
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
222
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
223 if len(arguments) < 1:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
224 print >>sys.stderr, "Missing command"
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
225 sys.exit(1)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
226
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
227 command_name = arguments[0]
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
228 arguments = arguments[1:]
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
229
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
230 command_class = get_command_class(command_name)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
231 if command_class is None:
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
232 print >>sys.stderr, "Unknown command %r" % command_name
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
233 sys.exit(1)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
234
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
235 command = command_class(arguments)
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
236 command.run()
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
237
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
238
df7498d0bd9d Add bin/treepkgbuilder.py, a script to manage treepkg's pbuilder instance
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
239 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)