From ceef80bee69c1bb3e5225c59acf7584b60b71f0f Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Thu, 16 Aug 2007 12:50:19 -0700
Subject: [PATCH] scripts: rearrange Options, make --version behave the same
 for all commands

---
 src/allmydata/scripts/cli.py    | 11 ++++-------
 src/allmydata/scripts/common.py | 18 +++++++++++++++++-
 src/allmydata/scripts/runner.py | 12 ++----------
 3 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/src/allmydata/scripts/cli.py b/src/allmydata/scripts/cli.py
index ef14a2f5..c954f9a3 100644
--- a/src/allmydata/scripts/cli.py
+++ b/src/allmydata/scripts/cli.py
@@ -1,14 +1,9 @@
 
 import os.path, sys
 from twisted.python import usage
+from allmydata.scripts.common import BaseOptions
 
-class OptionsMixin(usage.Options):
-    optFlags = [
-        ["quiet", "q", "Operate silently."],
-        ["version", "V", "Display version numbers and exit."],
-        ]
-
-class VDriveOptions(OptionsMixin):
+class VDriveOptions(BaseOptions, usage.Options):
     optParameters = [
         ["vdrive", "d", "global",
          "which virtual drive to use: 'global' or 'private'"],
@@ -21,6 +16,8 @@ class ListOptions(VDriveOptions):
     def parseArgs(self, vdrive_filename=""):
         self['vdrive_filename'] = vdrive_filename
 
+    longdesc = """List the contents of some portion of the virtual drive."""
+
 class GetOptions(VDriveOptions):
     def parseArgs(self, vdrive_filename, local_filename="-"):
         self['vdrive_filename'] = vdrive_filename
diff --git a/src/allmydata/scripts/common.py b/src/allmydata/scripts/common.py
index 114022be..f51e886a 100644
--- a/src/allmydata/scripts/common.py
+++ b/src/allmydata/scripts/common.py
@@ -1,8 +1,24 @@
 
-import os
+import os, sys
 from twisted.python import usage
 
 
+class BaseOptions:
+    optFlags = [
+        ["quiet", "q", "Operate silently."],
+        ["version", "V", "Display version numbers and exit."],
+        ]
+
+    def opt_version(self):
+        from twisted import copyright
+        import allmydata, zfec, foolscap
+        print "Twisted version:", copyright.version
+        print "Foolscap version:", foolscap.__version__
+        print "zfec version:", zfec.__version__
+        print "allmydata version:", allmydata.__version__
+        sys.exit(0)
+
+
 class BasedirMixin:
     optFlags = [
         ["multiple", "m", "allow multiple basedirs to be specified at once"],
diff --git a/src/allmydata/scripts/runner.py b/src/allmydata/scripts/runner.py
index ad2f8fa4..72935fa7 100644
--- a/src/allmydata/scripts/runner.py
+++ b/src/allmydata/scripts/runner.py
@@ -3,9 +3,10 @@ import sys
 from cStringIO import StringIO
 from twisted.python import usage
 
+from allmydata.scripts.common import BaseOptions
 import debug, create_node, startstop_node, cli
 
-class Options(cli.OptionsMixin):
+class Options(BaseOptions, usage.Options):
     synopsis = "Usage:  allmydata <command> [command options]"
 
     subCommands = []
@@ -14,15 +15,6 @@ class Options(cli.OptionsMixin):
     subCommands += debug.subCommands
     subCommands += cli.subCommands
 
-    def opt_version(self):
-        from twisted import copyright
-        import allmydata, zfec, foolscap
-        print "Twisted version:", copyright.version
-        print "Foolscap version:", foolscap.__version__
-        print "zfec version:", zfec.__version__
-        print "allmydata version:", allmydata.__version__
-        sys.exit(0)
-
     def postOptions(self):
         if not hasattr(self, 'subOptions'):
             raise usage.UsageError("must specify a command")
-- 
2.45.2