setup.py: make libbe._version optional.
[be.git] / libbe / command / set.py
index b41a731dc3854a99a78af9a60a2712eb884b9aa4..9413a13b9a1b20b5dd7834ca9d799e5f70d47550 100644 (file)
@@ -1,23 +1,24 @@
-# Copyright (C) 2005-2010 Aaron Bentley <abentley@panoramicfeedback.com>
+# Copyright (C) 2005-2012 Aaron Bentley <abentley@panoramicfeedback.com>
+#                         Chris Ball <cjb@laptop.org>
 #                         Gianluca Montecchi <gian@grys.it>
-#                         Marien Zwart <marienz@gentoo.org>
+#                         Marien Zwart <marien.zwart@gmail.com>
 #                         Thomas Gerigk <tgerigk@gmx.de>
-#                         W. Trevor King <wking@drexel.edu>
+#                         W. Trevor King <wking@tremily.us>
 #
 # This file is part of Bugs Everywhere.
 #
-# Bugs Everywhere is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation, either version 2 of the License, or (at your
-# option) any later version.
+# Bugs Everywhere is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 2 of the License, or (at your option) any
+# later version.
 #
 # Bugs Everywhere is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
 #
-# You should have received a copy of the GNU General Public License
-# along with Bugs Everywhere.  If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License along with
+# Bugs Everywhere.  If not, see <http://www.gnu.org/licenses/>.
 
 
 import textwrap
@@ -56,6 +57,15 @@ class Set (libbe.command.Command):
 
     def __init__(self, *args, **kwargs):
         libbe.command.Command.__init__(self, *args, **kwargs)
+        self.options.extend([
+                libbe.command.Option(name='bugdir', short_name='b',
+                    help='Short bugdir UUID to act on.  You '
+                    'only need to set this if you have multiple bugdirs in '
+                    'your repository.',
+                    arg=libbe.command.Argument(
+                        name='bugdir', metavar='ID', default=None,
+                        completion_callback=libbe.command.util.complete_bugdir_id)),
+                ])
         self.args.extend([
                 libbe.command.Argument(
                     name='setting', metavar='SETTING', optional=True,
@@ -65,7 +75,14 @@ class Set (libbe.command.Command):
                 ])
 
     def _run(self, **params):
-        bugdir = self._get_bugdir()
+        bugdirs = self._get_bugdirs()
+        if params['bugdir']:
+            bugdir = bugdirs[bugdir]
+        elif len(bugdirs) == 1:
+            bugdir = bugdirs.values()[0]
+        else:
+            raise libbe.command.UserError(
+                'Ambiguous bugdir {}'.format(sorted(bugdirs.values())))
         if params['setting'] == None:
             keys = bugdir.settings_properties
             keys.sort()
@@ -100,7 +117,56 @@ To unset a setting, set it to "none".
 
 Allowed settings are:
 
-%s""" % ('\n'.join(get_bugdir_settings()),)
+%s
+
+Note that this command does not provide a good interface for some of
+these settings (yet!).  You may need to edit the bugdir settings file
+(`.be/<bugdir>/settings`) manually.  Examples for each troublesome
+setting are given below.
+
+Add the following lines to override the default severities and use
+your own:
+
+  severities:
+    - - target
+      - The issue is a target or milestone, not a bug.
+    - - wishlist
+      - A feature that could improve usefulness, but not a bug.
+
+You may add as many name/description pairs as you wish to have; they
+are sorted in order from least important at the top, to most important
+at the bottom.  The target severity gets special handling by `be
+target`.
+
+Note that the values here _override_ the defaults. That means that if
+you like the defaults, and wish to keep them, you will have to copy
+them here before adding any of your own.  See `be severity --help` for
+the current list.
+
+Add the following lines to override the default statuses and use your
+own:
+
+  active_status:
+    - - unconfirmed
+      - A possible bug which lacks independent existance confirmation.
+    - - open
+      - A working bug that has not been assigned to a developer.
+
+  inactive_status:
+    - - closed
+      - The bug is no longer relevant.
+    - - fixed
+      - The bug should no longer occur.
+
+You may add as many name/description pairs as you wish to have; they
+are sorted in order from most important at the top, to least important
+at the bottom.
+
+Note that the values here _override_ the defaults. That means that if
+you like the defaults, and wish to keep them, you will have to copy
+them here before adding any of your own.  See `be status --help` for
+the current list.
+""" % ('\n'.join(get_bugdir_settings()),)
 
 def get_bugdir_settings():
     settings = []