def main(args): " Base dispather " try: func = ACTIONS.get(args.action) func(sys.argv[2:]) except (AssertionError, CalledProcessError), e: sys.stderr.write('\n' + str(e)) print "\nSee log: %s" % LOGFILE_HANDLER.stream.name sys.exit(1)
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)
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) @action((["action"], dict(choices=ACTIONS.keys(), help="Choose action: %s" % ', '.join(ACTIONS.keys())))) def main(args): " Base dispather " try: func = ACTIONS.get(args.action) func(sys.argv[2:]) except (AssertionError, CalledProcessError), e: sys.stderr.write('\n' + str(e)) print "\nSee log: %s" % LOGFILE_HANDLER.stream.name sys.exit(1) def console(): " Enter point " autocomplete() main(sys.argv[1:2])