aboutsummaryrefslogtreecommitdiffstats
path: root/becommands/tag.py
diff options
context:
space:
mode:
Diffstat (limited to 'becommands/tag.py')
-rw-r--r--becommands/tag.py134
1 files changed, 0 insertions, 134 deletions
diff --git a/becommands/tag.py b/becommands/tag.py
deleted file mode 100644
index ecd853f..0000000
--- a/becommands/tag.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (C) 2009 W. Trevor King <wking@drexel.edu>
-#
-# This program 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.
-#
-# This program 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.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-"""Tag a bug, or search bugs for tags"""
-from libbe import cmdutil, bugdir
-import os, copy
-__desc__ = __doc__
-
-def execute(args, manipulate_encodings=True):
- """
- >>> from libbe import utility
- >>> bd = bugdir.SimpleBugDir()
- >>> bd.set_sync_with_disk(True)
- >>> os.chdir(bd.root)
- >>> a = bd.bug_from_shortname("a")
- >>> print a.extra_strings
- []
- >>> execute(["a", "GUI"], manipulate_encodings=False)
- Tags for a:
- GUI
- >>> bd._clear_bugs() # resync our copy of bug
- >>> a = bd.bug_from_shortname("a")
- >>> print a.extra_strings
- ['TAG:GUI']
- >>> execute(["a", "later"], manipulate_encodings=False)
- Tags for a:
- GUI
- later
- >>> execute(["a"], manipulate_encodings=False)
- Tags for a:
- GUI
- later
- >>> execute(["--list"], manipulate_encodings=False)
- GUI
- later
- >>> execute(["a", "Alphabetically first"], manipulate_encodings=False)
- Tags for a:
- Alphabetically first
- GUI
- later
- >>> bd._clear_bugs() # resync our copy of bug
- >>> a = bd.bug_from_shortname("a")
- >>> print a.extra_strings
- ['TAG:Alphabetically first', 'TAG:GUI', 'TAG:later']
- >>> a.extra_strings = []
- >>> print a.extra_strings
- []
- >>> execute(["a"], manipulate_encodings=False)
- >>> bd._clear_bugs() # resync our copy of bug
- >>> a = bd.bug_from_shortname("a")
- >>> print a.extra_strings
- []
- >>> execute(["a", "Alphabetically first"], manipulate_encodings=False)
- Tags for a:
- Alphabetically first
- >>> execute(["--remove", "a", "Alphabetically first"], manipulate_encodings=False)
- >>> bd.cleanup()
- """
- parser = get_parser()
- options, args = parser.parse_args(args)
- cmdutil.default_complete(options, args, parser,
- bugid_args={0: lambda bug : bug.active==True})
-
- if len(args) == 0 and options.list == False:
- raise cmdutil.UsageError("Please specify a bug id.")
- elif len(args) > 2 or (len(args) > 0 and options.list == True):
- help()
- raise cmdutil.UsageError("Too many arguments.")
-
- bd = bugdir.BugDir(from_disk=True,
- manipulate_encodings=manipulate_encodings)
- if options.list:
- bd.load_all_bugs()
- tags = []
- for bug in bd:
- for estr in bug.extra_strings:
- if estr.startswith("TAG:"):
- tag = estr[4:]
- if tag not in tags:
- tags.append(tag)
- tags.sort()
- if len(tags) > 0:
- print '\n'.join(tags)
- return
- bug = cmdutil.bug_from_shortname(bd, args[0])
- if len(args) == 2:
- given_tag = args[1]
- estrs = bug.extra_strings
- tag_string = "TAG:%s" % given_tag
- if options.remove == True:
- estrs.remove(tag_string)
- else: # add the tag
- estrs.append(tag_string)
- bug.extra_strings = estrs # reassign to notice change
-
- tags = []
- for estr in bug.extra_strings:
- if estr.startswith("TAG:"):
- tags.append(estr[4:])
-
- if len(tags) > 0:
- print "Tags for %s:" % bug.uuid
- print '\n'.join(tags)
-
-def get_parser():
- parser = cmdutil.CmdOptionParser("be tag BUG-ID [TAG]\nor: be tag --list")
- parser.add_option("-r", "--remove", action="store_true", dest="remove",
- help="Remove TAG (instead of adding it)")
- parser.add_option("-l", "--list", action="store_true", dest="list",
- help="List all available tags and exit")
- return parser
-
-longhelp="""
-If TAG is given, add TAG to BUG-ID. If it is not specified, just
-print the tags for BUG-ID.
-
-To search for bugs with a particular tag, try
- $ be list --extra-strings TAG:<your-tag>
-"""
-
-def help():
- return get_parser().help_str() + longhelp