def autocomplete(force=False):
    " Shell autocompletion support. "

    if 'MAKESITE_AUTO_COMPLETE' not in environ and not force:
        return

    commands = filter(lambda cmd: cmd != 'main', ACTIONS.keys())

    cwords = environ['COMP_WORDS'].split()[1:]
    cword = int(environ['COMP_CWORD'])

    try:
        current = cwords[cword - 1]
    except IndexError:
        current = ''

    try:
        sub_action = [cmd for cmd in commands if cmd in cwords][0]
        if sub_action in ['info', 'uninstall', 'update', 'template']:
            if settings.MAKESITE_HOME:
                if not current or current.startswith('/'):
                    sites = list(gen_sites(settings.MAKESITE_HOME))
                    print ' '.join(site.deploy_dir for site in sites if site.
                                   deploy_dir.startswith(current))
                else:
                    names = map(lambda s: s.get_name(
                    ), gen_sites(settings.MAKESITE_HOME))
                    print ' '.join(
                        name for name in names if name.startswith(current))
        elif sub_action == 'install' and (cwords[-1] == '-m' or (current and cwords[-2] == '-m')):
            print ' '.join(
                mod for mod in get_base_modules() if mod.startswith(current))
        elif sub_action == 'install' and (cwords[-1] == '-t' or (current and cwords[-2] == '-t')):
            print ' '.join(tpl for tpl in get_base_templates(
            ) if tpl.startswith(current))
        elif sub_action == 'module':
            print ' '.join(
                tpl for tpl in get_base_modules() if tpl.startswith(current))
    except IndexError:
        print (' '.join(a for a in commands if a.startswith(current)))
    sys.exit(1)
def autocomplete ( force = False ) : if 'MAKESITE_AUTO_COMPLETE' not in environ and not force : return commands = filter ( lambda cmd : cmd != 'main' , ACTIONS . keys ( ) ) cwords = environ [ 'COMP_WORDS' ] . split ( ) [ 1 : ] cword = int ( environ [ 'COMP_CWORD' ] ) try : current = cwords [ cword - 1 ] except IndexError : current = '' try : sub_action = [ cmd for cmd in commands if cmd in cwords ] [ 0 ] if sub_action in [ 'info' , 'uninstall' , 'update' , 'template' ] : if settings . MAKESITE_HOME : if not current or current . startswith ( '/' ) : sites = list ( gen_sites ( settings . MAKESITE_HOME ) ) print ' ' . join ( site . deploy_dir for site in sites if site . deploy_dir . startswith ( current ) ) else : names = map ( lambda s : s . get_name ( ) , gen_sites ( settings . MAKESITE_HOME ) ) print ' ' . join ( name for name in names if name . startswith ( current ) ) elif sub_action == 'install' and ( cwords [ - 1 ] == '-m' or ( current and cwords [ - 2 ] == '-m' ) ) : print ' ' . join ( mod for mod in get_base_modules ( ) if mod . startswith ( current ) ) elif sub_action == 'install' and ( cwords [ - 1 ] == '-t' or ( current and cwords [ - 2 ] == '-t' ) ) : print ' ' . join ( tpl for tpl in get_base_templates ( ) if tpl . startswith ( current ) ) elif sub_action == 'module' : print ' ' . join ( tpl for tpl in get_base_modules ( ) if tpl . startswith ( current ) ) except IndexError : print ( ' ' . join ( a for a in commands if a . startswith ( current ) ) ) sys . exit ( 1 )
Shell autocompletion support.