Bläddra i källkod

- Add a ``-v`` / ``--version`` option to supervisord: Print the
supervisord version number out to stdout and exit. (Roger Hoover)

Chris McDonough 15 år sedan
förälder
incheckning
08ec5ca0a1
5 ändrade filer med 24 tillägg och 2 borttagningar
  1. 3 0
      CHANGES.txt
  2. 4 0
      docs/running.rst
  3. 7 0
      src/supervisor/options.py
  4. 1 0
      src/supervisor/supervisord.py
  5. 9 2
      src/supervisor/tests/test_options.py

+ 3 - 0
CHANGES.txt

@@ -1,5 +1,8 @@
 Next release
 
+  - Add a ``-v`` / ``--version`` option to supervisord: Print the
+    supervisord version number out to stdout and exit.  (Roger Hoover)
+
   - Import iterparse from xml.etree when available (eg: Python 2.6).  Patch
     by Sidnei da Silva.
 

+ 4 - 0
docs/running.rst

@@ -137,6 +137,10 @@ value in the configuration file.
 
    Strip ANSI escape sequences from all child log process.
 
+-v, --version
+
+   Print the supervisord version number out to stdout and exit.
+
 --profile_options=LIST
 
    Comma-separated options list for profiling.  Causes

+ 7 - 0
src/supervisor/options.py

@@ -381,6 +381,7 @@ class ServerOptions(Options):
         self.configroot = Dummy()
         self.configroot.supervisord = Dummy()
         
+        self.add(None, None, "v", "version", self.version)
         self.add("nodaemon", "supervisord.nodaemon", "n", "nodaemon", flag=1,
                  default=0)
         self.add("user", "supervisord.user", "u:", "user=")
@@ -417,6 +418,12 @@ class ServerOptions(Options):
         self.process_group_configs = []
         self.parse_warnings = []
 
+    def version(self, dummy):
+        """Print version to stdout and exit(0).
+        """
+        self.stdout.write('%s\n' % VERSION)
+        self.exit(0)
+
     def getLogger(self, filename, level, fmt, rotating=False, maxbytes=0,
                   backups=0, stdout=False):
         return loggers.getLogger(filename, level, fmt, rotating, maxbytes,

+ 1 - 0
src/supervisor/supervisord.py

@@ -20,6 +20,7 @@ Options:
 -c/--configuration FILENAME -- configuration file
 -n/--nodaemon -- run in the foreground (same as 'nodaemon true' in config file)
 -h/--help -- print this usage message and exit
+-v/--version -- print supervisord version number and exit
 -u/--user USER -- run supervisord as this user (or numeric uid)
 -m/--umask UMASK -- use this umask for daemon subprocess (default is 022)
 -d/--directory DIRECTORY -- directory to chdir to when daemonized

+ 9 - 2
src/supervisor/tests/test_options.py

@@ -14,7 +14,6 @@ from supervisor.tests.base import DummySupervisor
 from supervisor.tests.base import DummyLogger
 from supervisor.tests.base import DummyOptions
 from supervisor.tests.base import DummyPConfig
-from supervisor.tests.base import DummyPGroupConfig
 from supervisor.tests.base import DummyProcess
 from supervisor.tests.base import DummySocketConfig
 from supervisor.tests.base import lstrip
@@ -158,6 +157,14 @@ class ServerOptionsTests(unittest.TestCase):
 
     def _makeOne(self):
         return self._getTargetClass()()
+
+    def test_version(self):
+        from supervisor.options import VERSION
+        options = self._makeOne()
+        from StringIO import StringIO
+        options.stdout = StringIO()
+        self.assertRaises(SystemExit, options.version, None)
+        self.assertEqual(options.stdout.getvalue(), VERSION + '\n')
         
     def test_options(self):
         s = lstrip("""[inet_http_server]
@@ -675,7 +682,7 @@ class ServerOptionsTests(unittest.TestCase):
         config = UnhosedConfigParser()
         instance.logger = DummyLogger()
         config.read_string(text)
-        processes = instance.processes_from_section(config, 'program:foo', None)
+        instance.processes_from_section(config, 'program:foo', None)
         self.assertEqual(instance.parse_warnings[0],
              'For [program:foo], AUTO logging used for stdout_logfile '
              'without rollover, set maxbytes > 0 to avoid filling up '