chiark / gitweb /
adt-run option parsing ish
[autopkgtest.git] / runner / adt-run
1 #!/usr/bin/python2.4
2 # usage:
3 #       adt-run <options>... --- <virt-server> [<virt-server-arg>...]
4 #
5 # options:
6 #       --build-tree HOST-PATH  } build tree should be copied from here
7 #       --build-tree-tb TB-PATH }  on host or testbed
8 #       --user USER     run tests as USER on the testbed
9 #
10 # invoke in toplevel of package (not necessarily built)
11 # with package installed
12
13 import optparse
14 from optparse import OptionParser
15
16 def parse_args():
17         global opts
18         usage = "%prog <options> -- <virt-server>..."
19         parser = OptionParser(usage=usage)
20         pa = parser.add_option
21         pe = parser.add_option
22
23         def cb_vserv(op,optstr,value,parser):
24                 print('cb_vserv %s' % `parser.rargs`)
25                 parser.values.vserver = list(parser.rargs)
26                 del parser.rargs[:]
27
28         def cb_path(op,optstr,value,parser, long,tb):
29                 name = long.replace('-','_')
30                 parser.values.__dict__[name] = (tb, value)
31
32         def pa_path(long):
33                 def papa_tb(long, ca):
34                         pa('', long, action='callback', callback=cb_path,
35                                 nargs=1, type='string', callback_args=ca)
36                 papa_tb('--'+long,              (long, False))
37                 papa_tb('--'+long+'-tb',        (long, True))
38
39         pa_path('build-tree')
40         pa('','--user', type='string')
41
42         class SpecialOption(optparse.Option): pass
43         vs_op = SpecialOption('','--VSERVER-DUMMY')
44         vs_op.action = 'callback'
45         vs_op.type = None
46         vs_op.default = None
47         vs_op.nargs = 0
48         vs_op.callback = cb_vserv
49         vs_op.callback_args = ( )
50         vs_op.callback_kwargs = { }
51         vs_op.help = 'introduces virtualisation server and args'
52         vs_op._short_opts = []
53         #vs_op._long_opts = ['--DUMMY']
54         vs_op._long_opts = ['---']
55
56         pa(vs_op)
57
58         (opts,args) = parser.parse_args()
59         
60 parse_args()
61 print opts