コード例 #1
0
ファイル: calendar.py プロジェクト: nrocco/muttpy
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
コード例 #2
0
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
コード例 #3
0
ファイル: pyqemu.py プロジェクト: nrocco/qemufile
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))
コード例 #4
0
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)
コード例 #5
0
ファイル: main.py プロジェクト: nrocco/pasterd
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)
コード例 #6
0
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
コード例 #7
0
ファイル: __main__.py プロジェクト: nrocco/photonizer
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)
コード例 #8
0
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']
コード例 #9
0
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()
コード例 #10
0
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()
コード例 #11
0
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'
コード例 #12
0
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)
コード例 #13
0
ファイル: command.py プロジェクト: RaigK/smeterd
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)
コード例 #14
0
ファイル: command.py プロジェクト: Vulpecula-nl/smeterd
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)
コード例 #15
0
ファイル: emails.py プロジェクト: nrocco/muttpy
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
コード例 #16
0
ファイル: commands.py プロジェクト: nrocco/ca-store
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)
コード例 #17
0
ファイル: myapp.py プロジェクト: nrocco/pycli-tools
#!/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)
コード例 #18
0
def test_with_nonexistent_configfile():
    arguments = '-vvv -c test.config'.split()
    parser = get_argparser(arguments=arguments)
    args = parser.parse_args()

    assert True == True
コード例 #19
0
def test_without_prog():
    parser = get_argparser()
    args = parser.parse_args()
    assert args.prog == sys.argv[0]
コード例 #20
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'
コード例 #21
0
ファイル: test_actions.py プロジェクト: nrocco/pycli-tools
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()
コード例 #22
0
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']
コード例 #23
0
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
コード例 #24
0
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'
コード例 #25
0
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'
コード例 #26
0
ファイル: test_actions.py プロジェクト: nrocco/pycli-tools
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()
コード例 #27
0
ファイル: aliases.py プロジェクト: nrocco/muttpy
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()