def run(): if (len(sys.argv) < 2 or sys.argv[1] not in ['runserver', 'generate', 'quickstart']): print_help() if sys.argv[1] == 'quickstart': if len(sys.argv) != 2: print_help() sys.exit(quickstart()) if not os.path.exists('conf.py'): print('conf.py not found', file=sys.stderr) sys.exit(1) try: backup = sys.path sys.path = [''] + sys.path config = {} exec(open('conf.py').read(), config) finally: sys.path = backup for k, v in list(CONFIG_DEFAULTS.items()): config.setdefault(k, v) if 'files' not in config: print("conf.py doesn't define the 'files' variable", file=sys.stderr) sys.exit(1) manager = Stango() manager.files = config['files'] manager.index_file = config['index_file'] manager.template_dirs.insert(0, 'templates') if config['post_render_hook']: manager.add_hook('post_render_hook', config['post_render_hook']) if sys.argv[1] == 'runserver': host = '127.0.0.1' port = 8000 if len(sys.argv) == 3: if ':' in sys.argv[2]: host, port = sys.argv[2].split(':') else: port = sys.argv[2] try: port = int(port) except ValueError: print_help() elif len(sys.argv) > 3: print_help() def do_serve(): print('Starting server at http://%s:%d/' % (host, port)) httpd = manager.make_server(host, port, verbose=True) httpd.serve_forever() import stango.autoreload stango.autoreload.main(do_serve, config['autoreload']) elif sys.argv[1] == 'generate': if len(sys.argv) == 2: outdir = 'out' elif len(sys.argv) == 3: outdir = sys.argv[2] else: print_help() print('Generating to %s...' % outdir) sys.exit(manager.generate(outdir) or 0) else: print_usage()