#!/usr/bin/env python # Copyright (C) 2005-2009 Aaron Bentley and Panometrics, Inc. # Chris Ball # Gianluca Montecchi # Oleg Romanyshyn # W. Trevor King # # 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. import os import sys from libbe import cmdutil, version, pager __doc__ = cmdutil.help() usage = "be [options] [command] [command_options ...] [command_args ...]" parser = cmdutil.CmdOptionParser(usage) parser.command = "be" parser.add_option("--version", action="store_true", dest="version", help="Print version string and exit.") parser.add_option("--verbose-version", action="store_true", dest="verbose_version", help="Print verbose version information and exit.") parser.add_option("-d", "--dir", dest="dir", metavar="DIR", default=".", help="Run this command on the repository in DIR instead of the current directory.") parser.add_option("-p", "--paginate", dest="paginate", default=False, action='store_true', help="Pipe all output into less (or if set, $PAGER).") parser.add_option("--no-pager", dest="no_pager", default=False, action='store_true', help="Do not pipe git output into a pager.") # Option(name='repo', short_name='r', # help='Select BE repository (see `be help repo`) rather than' # 'the current directory.', # arg=Argument(name='repo', metavar='REPO', default='.', # completion_callback=libbe.ui.util.repo.complete)), try: options,args = parser.parse_args() for option,value in cmdutil.option_value_pairs(options, parser): if value == "--complete": if option == "dir": if len(args) == 0: args = ["."] paths = cmdutil.complete_path(args[0]) raise cmdutil.GetCompletions(paths) except cmdutil.GetHelp: print cmdutil.help(parser=parser) sys.exit(0) except cmdutil.GetCompletions, e: print '\n'.join(e.completions) sys.exit(0) if options.version == True or options.verbose_version == True: print version.version(verbose=options.verbose_version) sys.exit(0) paginate = 'auto' if options.paginate == True: paginate = 'always' if options.no_pager== True: paginate = 'never' pager.run_pager(paginate) try: if len(args) == 0: raise cmdutil.UsageError, "must supply a command" sys.exit(cmdutil.execute(args[0], args=args[1:], dir=options.dir)) except cmdutil.GetHelp: print cmdutil.help(args[0]) sys.exit(0) except cmdutil.GetCompletions, e: print '\n'.join(e.completions) sys.exit(0) except cmdutil.UnknownCommand, e: print e sys.exit(1) except cmdutil.UsageError, e: print "Invalid usage:", e if len(args) == 0: print cmdutil.help(parser=parser) else: print "\nArgs:", args print cmdutil.help(args[0]) sys.exit(1) except cmdutil.UserError, e: print "ERROR:" print e sys.exit(1)