def main(): from pycli_tools.parsers import get_argparser parser = get_argparser(prog=PROG, version=__version__, default_config=DEFAULT_CONFIG, description=DESC) subparsers = parser.add_subparsers() parser_a = subparsers.add_parser('show', help='show event') parser_a.add_argument('event') parser_a.set_defaults(func=show_event) parser_b = subparsers.add_parser('organizer', help='get event organizer') parser_b.add_argument('event') parser_b.set_defaults(func=get_event_organizer) args = parser.parse_args() try: args.func(args) except Exception as e: if args.quiet: import sys sys.exit(1) else: if args.verbose == 0: log.error(e) else: raise e
def test_verbose_and_quiet(): arguments = '-vvv -q'.split() parser = get_argparser(arguments=arguments) args = parser.parse_args() assert args.loglevel == 100 assert args.quiet == True assert args.verbose == 3
def main(): from pycli_tools.parsers import get_argparser parser = get_argparser( prog='pyqemu', version='0.1.0', logging_format='[%(asctime)-15s] %(levelname)s %(message)s', ) parser.add_argument('--qemufile', default="Qemufile", help='the name of the Qemufile to read boxes from', ) parser.add_commands([ ListBoxesCommand(), StartBoxCommand(), GenerateMacCommand(), ]) args = parser.parse_args() if 'func' not in args: parser.print_help() else: args.func(args, parser=parser, boxes=Box.factory(args.qemufile))
def main(): parser = get_argparser(prog='ca', logging_format='[%(levelname)s] %(message)s', version=__version__, default_config='~/.carc', description='Certificate Authority Management') parser.add_argument('--openssl-bin', default=OPENSSL_BIN, help='specify an alternate openssl binary. ' 'if not specified defaults to %s' % OPENSSL_BIN) parser.add_argument('--base-dir', default=os.getcwd(), help='base directory') parser.add_commands([ InitCommand(), DomainCommand(), GenerateCaCommand(), ViewCertCommand() ]) # parse command line arguments args = parser.parse_args() # Initialize the SslStore store = SslStore( args.base_dir, openssl_bin=args.openssl_bin, ) # call the subcommand handler function args.func(args, store=store, parser=parser)
def main(): from pycli_tools.parsers import get_argparser from pasterd import webserver, __version__ parser = get_argparser(prog='pasterd', version=__version__, default_config='~/.pasterdrc', description='Command line paste bin utility') parser.add_argument('-b', '--bind', metavar='address:port', default='0.0.0.0:8000', help='Inet socket to bind to') parser.add_argument('-u', '--base-url', metavar='http://address:port', help='The base url of this server') parser.add_argument('-r', '--reload', action='store_true', help="Auto respawn server") parser.add_argument('-d', '--database', default='/tmp/pastes.sqlite', help='location to the pastes sqlite database') parser.add_argument('-p', '--paste-variable', default='p') args = parser.parse_args() parts = args.bind.split(':') host = parts[0] port = parts[1] if len(parts) > 1 else 8000 base_url = args.base_url or 'http://%s:%s' % (host, port) log.warn('Starting pasterd v%s', __version__) webserver.setup(args.database, base_url, args.paste_variable) webserver.run(host=host, port=port, reloader=args.reload)
def test_with_default_loglevel(): parser = get_argparser(prog='myapp', version='1.0', default_config='~/.myapprc') args = parser.parse_args() assert args.loglevel == 30 assert args.quiet == False assert args.verbose == 0
def main(): parser = get_argparser(prog='photonizer', default_config=__config_files__, version=__version__) parser.add_commands(commands) args = parser.parse_args() return args.func(args, parser=parser)
def test_specify_custom_config(): arguments = '-c test/myapp.conf'.split() parser = get_argparser(prog='myapp', version='1.7', default_config='~/.myapprc', arguments=arguments) args = parser.parse_args() assert args.config_file == ['test/myapp.conf'] assert args.default_config_file == ['~/.myapprc']
def test_processing_remaining_argv(): sys.argv.append('test') parser = get_argparser(prog='myapp', version='1.0', default_config='~/.myapprc') parser.add_argument('event') args = parser.parse_args() assert args.event == 'test' sys.argv.pop()
def test_parsing_config_file_override(): sys.argv.append('--database') sys.argv.append('mydb.sqlite') parser = get_argparser(prog='myapp', version='1.7', default_config='test/myapp.conf') parser.add_argument('--database') args = parser.parse_args() assert args.database == 'mydb.sqlite' sys.argv.pop() sys.argv.pop()
def test_argumentparser_desc_and_epilog(): desc = 'This is a description' epilog = 'This is an epilog' parser = get_argparser(prog='myapp', default_config='myapp.conf', description=desc, epilog=epilog) args = parser.parse_args() assert epilog in parser.epilog, 'parser.epilog does not contain the given epilog' assert 'myapp reads its default configuration from myapp.conf' in parser.epilog assert parser.description == desc, 'Description does not match'
def parse_and_run(args=None): parser = get_argparser( prog='smeterd', version=__version__, logging_format='[%(asctime)-15s] %(levelname)s %(message)s', description='Read smart meter P1 packets') parser.add_commands([ ReadMeterCommand(), ]) args = parser.parse_args() args.func(args, parser=parser)
def parse_and_run(args=None): parser = get_argparser( prog='smeterd', version=__version__, logging_format='[%(asctime)-15s] %(levelname)s %(message)s', description='Read smart meter P1 packets' ) parser.add_commands([ ReadMeterCommand(), ]) args = parser.parse_args() args.func(args, parser=parser)
def parse_and_run(): parser = get_argparser( prog='smeterd', version=__version__, default_config='~/.smeterdrc', logging_format='[%(asctime)-15s] %(levelname)s %(message)s', description=__description__ ) parser.add_commands([ ReadMeterCommand(), ]) args = parser.parse_args() args.func(args, parser=parser)
def main(): from pycli_tools.parsers import get_argparser parser = get_argparser(prog=PROG, version=__version__, default_config=DEFAULT_CONFIG, description=DESC) parser.add_argument('email', nargs=1) parser.set_defaults(func=list_all_emails) args = parser.parse_args() try: args.func(args) except Exception as e: if args.quiet: import sys sys.exit(1) else: if args.verbose == 0: log.error(e) else: raise e
def main(): parser = get_argparser( prog='ca', logging_format='[%(levelname)s] %(message)s', version=__version__, default_config='~/.carc', description='Certificate Authority Management' ) parser.add_argument( '--openssl-bin', default=OPENSSL_BIN, help='specify an alternate openssl binary. ' 'if not specified defaults to %s' % OPENSSL_BIN ) parser.add_argument( '--base-dir', default=os.getcwd(), help='base directory' ) parser.add_commands([ InitCommand(), DomainCommand(), GenerateCaCommand(), ViewCertCommand() ]) # parse command line arguments args = parser.parse_args() # Initialize the SslStore store = SslStore( args.base_dir, openssl_bin=args.openssl_bin, ) # call the subcommand handler function args.func(args, store=store, parser=parser)
#!/usr/bin/env python import os, sys; sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')) from pycli_tools.parsers import get_argparser parser = get_argparser(prog='myapp', version='0.1', default_config=['/etc/myapp.ini', '~/.myapprc']) parser.add_argument('--database') parser.add_argument('file') args = parser.parse_args() for key, value in args.__dict__.iteritems(): print '{:<24} = {}'.format(key, value)
def test_with_nonexistent_configfile(): arguments = '-vvv -c test.config'.split() parser = get_argparser(arguments=arguments) args = parser.parse_args() assert True == True
def test_without_prog(): parser = get_argparser() args = parser.parse_args() assert args.prog == sys.argv[0]
def test_ignoring_config_no_section(): parser = get_argparser(prog='nonexistentsection', version='1.1.1', default_config='test/myapp.conf') args = parser.parse_args() assert args.prog == 'nonexistentsection'
def test_action_file_not_exists(): arguments = '--database non-existent.txt'.split() parser = get_argparser(prog='myapp', version='1.7', arguments=arguments) parser.add_argument('--database', action=ExistingFileAction) args = parser.parse_args()
def test_with_default_config(): parser = get_argparser(prog='myapp', version='1.0', default_config='~/.myapprc') args = parser.parse_args() assert args.config_file == ['~/.myapprc'] assert args.default_config_file == ['~/.myapprc']
def test_no_default_config(): parser = get_argparser(prog='myapp', version='1.0') args = parser.parse_args() assert args.config_file == [] assert args.default_config_file == None
def test_parsing_config_file(): parser = get_argparser(prog='myapp', version='1.7', default_config='test/myapp.conf') args = parser.parse_args() assert args.database == '/some/path/to/my/database.sqlite'
def test_prog_and_version(): parser = get_argparser(prog='myapp', version='1.0', default_config='~/.myapprc') args = parser.parse_args() assert args.prog == 'myapp' assert args.version == '1.0'
def test_action_file_exists(): arguments = '--database %s' % os.path.abspath(__file__) parser = get_argparser(prog='myapp', version='1.7', arguments=arguments.split()) parser.add_argument('--database', action=ExistingFileAction) args = parser.parse_args()
def main(): from pycli_tools.parsers import get_argparser parser = get_argparser(prog=PROG, version=__version__, default_config=DEFAULT_CONFIG, description=DESC) parser.add_argument('-e', '--endpoint', metavar='endpoint', help='The ldap endpoint to query') parser.add_argument('-u', '--username', metavar='username', help='The username to login with') parser.add_argument('-p', '--password', metavar='password', help='The password to login with') parser.add_argument('-d', '--cache-db', dest='cache_db', metavar='path/to/cache.db', help='Location of the cache database') parser.add_argument('query', nargs='+', help='Name or email to lookup. If the query ' 'contains a `!!` you can skip the cache and ' 'force a lookup agains the ldap directory.') args = parser.parse_args() if args.cache_db: log.info('Using %s for caching results' % args.cache_db) cache = AliasCache(args.cache_db) else: log.info('Not caching any results.') cache = None query = ' '.join(args.query) log.debug('Working with query: `%s`' % query) if query.startswith('@'): if not cache: raise Exception('Group lookups only work ' 'when using a cache database') query = query.lstrip('@') log.debug('Now doing a group lookup for %s' % query) print '' for row in cache.lookup_group(query): print '{emails}\t{group}'.format(emails=row[1], group=row[0]) else: if '!!' in query: log.info('Found `!!`. Force an ldap lookup') query = query.replace('!!', '') skip_cache = True else: skip_cache = False if not cache or skip_cache: log.debug('Skipping the local cache, hitting ldap') results = get_ldap_results_for(query, host=args.endpoint, user=args.username, password=args.password, base=args.base) if cache: log.debug('Caching results from ldap locally') for result in results: cache.insert(*result) else: results = cache.lookup(query) if len(results) == 0: log.info('No cached entries found. Hitting ldap') results = get_ldap_results_for(query, host=args.endpoint, user=args.username, password=args.password, base=args.base) if cache: log.debug('Caching results from ldap locally') for result in results: cache.insert(*result) else: log.debug('Found %s results from cache' % len (results)) print '' for row in results: print '{email}\t{name}\t{nick}'.format(name=row[1], email=row[2], nick=row[0]) if cache: cache.close()