Ejemplo n.º 1
0
def prepare_command():
    log.mark('preparing couchdb')
    log.info('removing unneeded erlang packages')
    with config['couchdb_dir'].as_working_dir():
        lib_dir = path('lib')
        for lib_name in rm_erl_libs:
            lib = lib_dir.dirs(lib_name)
            if lib:
                lib[0].rmtree()
            else:
                log.warn('could not find %s' % lib_name)

        for rm in [
                'erts-*/src',
                'erts-*/include',
                'erts-*/man',
                'erts-*/doc',
                'lib/*/src',
                'lib/*/examples',
                'lib/*/include',
                'share/info',
                'share/couchdb/www/docs/',
        ]:
            for p in path('.').glob(rm):
                p.rmtree(ignore_errors=True)
Ejemplo n.º 2
0
def prepare_command():
    log.mark('preparing couchdb')
    log.info('removing unneeded erlang packages')
    with config['couchdb_dir'].as_working_dir():
        lib_dir = path('lib')
        for lib_name in rm_erl_libs:
            lib = lib_dir.dirs(lib_name)
            if lib:
                lib[0].rmtree()
            else:
                log.warn('could not find %s' % lib_name)

        for rm in [
            'erts-*/src', 'erts-*/include', 'erts-*/man', 'erts-*/doc',
            'lib/*/src', 'lib/*/examples', 'lib/*/include',
            'share/info', 'share/couchdb/www/docs/',
        ]:
            for p in path('.').glob(rm):
                p.rmtree(ignore_errors=True)
Ejemplo n.º 3
0
def parse_and_run_function(function, args=None, command_name=None,
        add_dry_run_option=True, add_verbosity_option=True):
    #TODO refactor me, I'm too long
    if args is None:
        args = sys.argv
    
    required_args, optional_args = inspect_args(function)
    
    func_doc = function.__doc__ or ''
    params_doc = parse_rst_params(func_doc)
    
    usage = 'usage: %prog '
    if command_name:
        usage += command_name.replace('_', '-') + ' '
    usage += '[options] ' + ' '.join(required_args)
    
    if func_doc:
        first_paragraph = re.findall('(.*?)((\n[ \t]*\n)|$)', func_doc,
            re.DOTALL)[0][0]
        first_paragraph = ' '.join(l.strip() for l in
            first_paragraph.split('\n'))
        usage += '\n\n' + '\n'.join(wrap(first_paragraph, 60))
    
    if set(required_args).intersection(list(params_doc.keys())):
        usage += '\n\nRequired arguments:'
        for arg in required_args:
            usage += '\n%s' % arg
            if arg in params_doc:
                usage += ': %s' % params_doc[arg]
        
    add_help_option = True
    if getattr(function, 'no_help', False):
        add_help_option = False
    
    fetch_all = None
    if hasattr(function, 'fetch_all'):
        fetch_all = function.fetch_all
        optional_args = [(arg, default) for arg, default in optional_args
            if arg != fetch_all]
    
    parser = optparse.OptionParser
    if getattr(function, 'non_strict', False):
        parser = NonStrictOptionParser
    
    parser = parser(usage, add_help_option=add_help_option)
    
    for arg_name, default in optional_args:
        options = {}
        if isinstance(default, bool):
            if default:
                options =  {'action': 'store_false'}
            else: 
                options =  {'action': 'store_true'}
        elif isinstance(default, int):
            options =  {'type': 'int'}
        elif isinstance(default, float):
            options =  {'type': 'float'}
        parser.add_option('--' + arg_name.replace('_', '-'),
                          help=params_doc.get(arg_name, None),
                          dest=arg_name, default=default, metavar=default, **options)
    
    if add_dry_run_option:
        parser.add_option('--dry-run', '-n', dest='dry_run', default=False,
            action='store_true', help='don\'t actually do anything')
    
    if getattr(function, 'no_verbosity', False):
        add_verbosity_option = False
    if add_verbosity_option:
        parser.add_option('--verbose', '-v', dest='verbose',
            action='count', help='be more verbose')
        parser.add_option('--quite', '-q', dest='quite',
            action='count', help='be more silent')
    
    (options, args) = parser.parse_args(args)
    
    if add_verbosity_option:
        verbosity = (options.verbose or 0) - (options.quite or 0)
        log.inc_log_level(verbosity)
    
    
    if add_dry_run_option and options.dry_run:
        misc.options.dry = True
        log.inc_log_level(1)
        log.warn('running in dry-mode. don\'t actually do anything')
    
    args = args[1:]
    if len(args) < len(required_args):
        parser.error('number of arguments does not match')
    kw = {}
    for arg_name, _default in optional_args:
        kw[arg_name] = getattr(options, arg_name)
    
    if fetch_all:
        kw[fetch_all] = args[len(required_args):]
    return function(*args[:len(required_args)], **kw)
Ejemplo n.º 4
0
def parse_and_run_function(function, args=None, command_name=None,
        add_dry_run_option=True, add_verbosity_option=True):
    #TODO refactor me, I'm too long
    if args is None:
        args = sys.argv
    
    required_args, optional_args = inspect_args(function)
    
    func_doc = function.__doc__ or ''
    params_doc = parse_rst_params(func_doc)
    
    usage = 'usage: %prog '
    if command_name:
        usage += command_name.replace('_', '-') + ' '
    usage += '[options] ' + ' '.join(required_args)
    
    if func_doc:
        first_paragraph = re.findall('(.*?)((\n[ \t]*\n)|$)', func_doc,
            re.DOTALL)[0][0]
        first_paragraph = ' '.join(l.strip() for l in
            first_paragraph.split('\n'))
        usage += '\n\n' + '\n'.join(wrap(first_paragraph, 60))
    
    if set(required_args).intersection(params_doc.keys()):
        usage += '\n\nRequired arguments:'
        for arg in required_args:
            usage += '\n%s' % arg
            if arg in params_doc:
                usage += ': %s' % params_doc[arg]
        
    add_help_option = True
    if getattr(function, 'no_help', False):
        add_help_option = False
    
    fetch_all = None
    if hasattr(function, 'fetch_all'):
        fetch_all = function.fetch_all
        optional_args = [(arg, default) for arg, default in optional_args
            if arg != fetch_all]
    
    parser = optparse.OptionParser
    if getattr(function, 'non_strict', False):
        parser = NonStrictOptionParser
    
    parser = parser(usage, add_help_option=add_help_option)
    
    for arg_name, default in optional_args:
        options = {}
        if isinstance(default, bool):
            if default:
                options =  {'action': 'store_false'}
            else: 
                options =  {'action': 'store_true'}
        elif isinstance(default, int):
            options =  {'type': 'int'}
        elif isinstance(default, float):
            options =  {'type': 'float'}
        parser.add_option('--' + arg_name.replace('_', '-'),
                          help=params_doc.get(arg_name, None),
                          dest=arg_name, default=default, metavar=default, **options)
    
    if add_dry_run_option:
        parser.add_option('--dry-run', '-n', dest='dry_run', default=False,
            action='store_true', help='don\'t actually do anything')
    
    if getattr(function, 'no_verbosity', False):
        add_verbosity_option = False
    if add_verbosity_option:
        parser.add_option('--verbose', '-v', dest='verbose',
            action='count', help='be more verbose')
        parser.add_option('--quiet', '-q', dest='quiet',
            action='count', help='be more silent')
    
    (options, args) = parser.parse_args(args)
    
    if add_verbosity_option:
        verbosity = (options.verbose or 0) - (options.quiet or 0)
        log.inc_log_level(verbosity)
    
    
    if add_dry_run_option and options.dry_run:
        misc.options.dry = True
        log.inc_log_level(1)
        log.warn('running in dry-mode. don\'t actually do anything')
    
    args = args[1:]
    if len(args) < len(required_args):
        parser.error('number of arguments does not match')
    kw = {}
    for arg_name, _default in optional_args:
        kw[arg_name] = getattr(options, arg_name)
    
    if fetch_all:
        kw[fetch_all] = args[len(required_args):]
    return function(*args[:len(required_args)], **kw)