]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/scripts/common.py
runner: make most commands use ~/.tahoe by default (create-client, start/stop/restart...
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / scripts / common.py
1
2 import os, sys
3 from twisted.python import usage
4
5
6 class BaseOptions:
7     optFlags = [
8         ["quiet", "q", "Operate silently."],
9         ["version", "V", "Display version numbers and exit."],
10         ]
11
12     def opt_version(self):
13         from twisted import copyright
14         import allmydata, zfec, foolscap
15         print "Twisted version:", copyright.version
16         print "Foolscap version:", foolscap.__version__
17         print "zfec version:", zfec.__version__
18         print "allmydata version:", allmydata.__version__
19         sys.exit(0)
20
21
22 class BasedirMixin:
23     optFlags = [
24         ["multiple", "m", "allow multiple basedirs to be specified at once"],
25         ]
26
27     def postOptions(self):
28         if not self.basedirs:
29             raise usage.UsageError("<basedir> parameter is required")
30         if self['basedir']:
31             del self['basedir']
32         self['basedirs'] = [os.path.abspath(os.path.expanduser(b))
33                             for b in self.basedirs]
34
35     def parseArgs(self, *args):
36         self.basedirs = []
37         if self['basedir']:
38             self.basedirs.append(self['basedir'])
39         if self['multiple']:
40             self.basedirs.extend(args)
41         else:
42             if len(args) == 0 and not self.basedirs:
43                 self.basedirs.append(os.path.expanduser("~/.tahoe"))
44             if len(args) > 0:
45                 self.basedirs.append(args[0])
46             if len(args) > 1:
47                 raise usage.UsageError("I wasn't expecting so many arguments")
48
49 class NoDefaultBasedirMixin(BasedirMixin):
50     def parseArgs(self, *args):
51         # create-client won't default to --basedir=~/.tahoe
52         self.basedirs = []
53         if self['basedir']:
54             self.basedirs.append(self['basedir'])
55         if self['multiple']:
56             self.basedirs.extend(args)
57         else:
58             if len(args) > 0:
59                 self.basedirs.append(args[0])
60             if len(args) > 1:
61                 raise usage.UsageError("I wasn't expecting so many arguments")
62         if not self.basedirs:
63             raise usage.UsageError("--basedir must be provided")
64