def main(argv=None): """The entry point of the application.""" if argv is None: argv = sys.argv[1:] version = 'Grip ' + __version__ # Parse options args = docopt(usage, argv=argv, version=version) # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate address if address and not host and not port: print 'Error: Invalid address', repr(address) # Run server try: serve(path, host, port, args['--gfm'], args['--context'], args['--render-offline'], args['--user'], args['--pass']) return 0 except ValueError, ex: print 'Error:', ex return 1
def main(argv=None, force_utf8=True): """The entry point of the application.""" if force_utf8 and sys.version_info.major == 2: reload(sys) sys.setdefaultencoding('utf-8') if argv is None: argv = sys.argv[1:] version = 'Grip ' + __version__ # Show specific errors if '-a' in argv or '--address' in argv: print('Use grip [options] <path> <address> instead of -a') print('See grip -h for details') return 2 if '-p' in argv or '--port' in argv: print('Use grip [options] [<path>] [<hostname>:]<port> instead of -p') print('See grip -h for details') return 2 # Parse options args = docopt(usage, argv=argv, version=version) # Clear the cache if args['--clear']: try: clear_cache() return 0 except ValueError as ex: print('Error:', ex) return 1 # Export to a file instead of running a server if args['--export']: try: export(args['<path>'], args['--gfm'], args['--context'], args['--user'], args['--pass'], False, args['--wide'], True, args['<address>'], args['--api-url']) return 0 except ValueError as ex: print('Error:', ex) return 1 # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate address if address and not host and not port: print('Error: Invalid address', repr(address)) # Run server try: serve(path, host, port, args['--gfm'], args['--context'], args['--user'], args['--pass'], False, args['--wide'], False, args['--api-url']) return 0 except ValueError as ex: print('Error:', ex) return 1
def main(argv=None): """The entry point of the application.""" if argv is None: argv = sys.argv[1:] version = 'Grip ' + __version__ # Parse options args = docopt(usage, argv=argv, version=version) # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Export to a file instead of running a server if args['--export']: try: export(path, args['--gfm'], args['--context'], args['--user'], args['--pass'], False) return 0 except ValueError as ex: print('Error:', ex) return 1 # Validate address if address and not host and not port: print('Error: Invalid address', repr(address)) # Run server try: serve(path, host, port, args['--gfm'], args['--context'], args['--user'], args['--pass'], False) return 0 except ValueError as ex: print('Error:', ex) return 1
def main(args=None): """The entry point of the application.""" if args is None: args = sys.argv[1:] # Parse command-line args = docopt(__doc__, argv=args) # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate arguments if address and not (host or port): print 'Error: Invalid address', repr(address) return # Default values if path is None: path = '.' if host is None: host = 'localhost' if port is None: port = 5000 # Run server print ' * Serving %s on http://%s:%s/' % (path, host, port)
def main(initial_args=None): """The entry point of the application.""" if initial_args is None: initial_args = sys.argv[1:] version = 'Grip ' + __version__ # Parse options args = docopt(usage, argv=initial_args, version=version) # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) if args['--export']: try: write_html(path) return 0 except Exception as e: print("Error: ", e) return 1 # Validate address if address and not host and not port: print 'Error: Invalid address', repr(address) # Run server try: serve(path, host, port, args['--gfm'], args['--context']) return 0 except ValueError, ex: print 'Error:', ex return 1
def main(argv=None, force_utf8=True): """The entry point of the application.""" if force_utf8 and sys.version_info.major == 2: reload(sys) sys.setdefaultencoding('utf-8') if argv is None: argv = sys.argv[1:] version = 'Grip ' + __version__ # Show specific errors if '-a' in argv or '--address' in argv: print('Use grip [options] <path> <address> instead of -a') print('See grip -h for details') return 2 if '-p' in argv or '--port' in argv: print('Use grip [options] [<path>] [<hostname>:]<port> instead of -p') print('See grip -h for details') return 2 # Parse options args = docopt(usage, argv=argv, version=version) # Clear the cache if args['--clear']: try: clear_cache() return 0 except ValueError as ex: print('Error:', ex) return 1 # Export to a file instead of running a server if args['--export']: try: export(args['<path>'], args['--gfm'], args['--context'], args['--user'], args['--pass'], False, args['--wide'], True, args['<address>']) return 0 except ValueError as ex: print('Error:', ex) return 1 # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate address if address and not host and not port: print('Error: Invalid address', repr(address)) # Run server try: serve(path, host, port, args['--gfm'], args['--context'], args['--user'], args['--pass'], False, args['--wide']) return 0 except ValueError as ex: print('Error:', ex) return 1
def test_split_address(): for address in hosts: host, port = split_address(address) assert address == host, 'Expected a host, %s, got %s' % ( repr((address, None)), repr((host, port))) for address in ports: host, port = split_address(address) address = str(address).replace(':', '') assert address == str(port), 'Expected a port, %s, got %s' % ( repr((None, address)), repr((host, port))) for h, p in product(hosts, ports): if isinstance(p, basestring): p = str(p).replace(':', '') host, port = split_address('%s:%s' % (h, p)) assert (str(host) == str(h) and str(port) == str(p), 'Expected %s, got %s' % (repr((h, p)), repr((host, port))))
def main(argv=None, force_utf8=True, patch_svg=True): """ The entry point of the application. """ if force_utf8 and sys.version_info[0] == 2: reload(sys) sys.setdefaultencoding("utf-8") if patch_svg and sys.version_info[0] == 2 and sys.version_info[1] <= 6: mimetypes.add_type("image/svg+xml", ".svg") if argv is None: argv = sys.argv[1:] # Show specific errors if "-a" in argv or "--address" in argv: print("Use grip [options] <path> <address> instead of -a") print("See grip -h for details") return 2 if "-p" in argv or "--port" in argv: print("Use grip [options] [<path>] [<hostname>:]<port> instead of -p") print("See grip -h for details") return 2 # Parse options args = docopt(usage, argv=argv, version=version) # Handle printing version with -V (docopt handles --version) if args["-V"]: print(version) return 0 # Clear the cache if args["--clear"]: clear_cache() return 0 # Get password from prompt if necessary password = args["--pass"] if args["--user"] and not password: password = getpass() # Export to a file instead of running a server if args["--export"]: try: export( args["<path>"], args["--user-content"], args["--context"], args["--user"], password, False, args["--wide"], not args["--no-inline"], args["<address>"], args["--api-url"], args["--title"], ) return 0 except ReadmeNotFoundError as ex: print("Error:", ex) return 1 # Parse arguments path, address = resolve(args["<path>"], args["<address>"]) host, port = split_address(address) # Validate address if address and not host and port is None: print("Error: Invalid address", repr(address)) # Run server try: serve( path, host, port, args["--user-content"], args["--context"], args["--user"], password, False, args["--wide"], False, args["--api-url"], args["--title"], not args["--norefresh"], args["--browser"], args["--quiet"], None, ) return 0 except ReadmeNotFoundError as ex: print("Error:", ex) return 1
def main(argv=None, force_utf8=True, patch_svg=True): """ The entry point of the application. """ if force_utf8 and sys.version_info[0] == 2: reload(sys) # noqa sys.setdefaultencoding('utf-8') if patch_svg and sys.version_info[0] == 2 and sys.version_info[1] <= 6: mimetypes.add_type('image/svg+xml', '.svg') if argv is None: argv = sys.argv[1:] # Show specific errors if '-a' in argv or '--address' in argv: print('Use grip [options] <path> <address> instead of -a') print('See grip -h for details') return 2 if '-p' in argv or '--port' in argv: print('Use grip [options] [<path>] [<hostname>:]<port> instead of -p') print('See grip -h for details') return 2 # Parse options args = docopt(usage, argv=argv, version=version) # Handle printing version with -V (docopt handles --version) if args['-V']: print(version) return 0 # Clear the cache if args['--clear']: clear_cache() return 0 # Get password from prompt if necessary password = args['--pass'] if args['--user'] and not password: password = getpass() # Export to a file instead of running a server if args['--export']: try: export(args['<path>'], args['--user-content'], args['--context'], args['--user'], password, False, args['--wide'], not args['--no-inline'], args['<address>'], args['--api-url'], args['--title'], args['--quiet']) return 0 except ReadmeNotFoundError as ex: print('Error:', ex) return 1 # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate address if address and not host and port is None: print('Error: Invalid address', repr(address)) # Run server try: serve(path, host, port, args['--user-content'], args['--context'], args['--user'], password, False, args['--wide'], False, args['--api-url'], args['--title'], not args['--norefresh'], args['--browser'], args['--quiet'], None) return 0 except ReadmeNotFoundError as ex: print('Error:', ex) return 1 except socket.error as ex: print('Error:', ex) if ex.errno == errno.EADDRINUSE: print('This port is in use. Is a grip server already running? ' 'Stop that instance or specify another port here.') return 1
def execute(args): """Executes the command indicated by the specified parsed arguments.""" def info(*message): """Displays a message unless -q was specified.""" if not args['-q']: print ' '.join(map(str, message)) if args['init']: try: repo = init(args['<directory>']) info('Initialized Gitpress repository in', repo) except RepositoryAlreadyExistsError as ex: info('Gitpress repository already exists in', ex.repo) return 0 if args['preview']: directory, address = resolve(args['<directory>'], args['<address>']) host, port = split_address(address) if address and not host and not port: error('Invalid address', repr(address)) return preview(directory, host=host, port=port) if args['build']: require_repo(args['<directory>']) info('Building site', os.path.abspath(args['<directory>'] or '.')) try: out_directory = build(args['<directory>'], args['--out']) except NotADirectoryError as ex: error(ex) info('Site built in', os.path.abspath(out_directory)) return 0 if args['themes']: theme = args['<theme>'] if args['use']: try: switched = use_theme(theme) except ConfigSchemaError as ex: error('Could not modify config:', ex) return 1 except ThemeNotFoundError as ex: error('Theme %s is not currently installed.' % repr(theme)) return 1 info('Switched to theme %s' if switched else 'Already using %s' % repr(theme)) elif args['install']: # TODO: implement raise NotImplementedError() elif args['uninstall']: # TODO: implement raise NotImplementedError() else: themes = list_themes() if themes: info('Installed themes:') info(' ' + '\n '.join(themes)) else: info('No themes installed.') return 0 if args['plugins']: plugin = args['<plugin>'] if args['add']: try: added = add_plugin(plugin) except ConfigSchemaError as ex: error('Could not modify config:', ex) return 1 info(('Added plugin %s' if added else 'Plugin %s has already been added.') % repr(plugin)) elif args['remove']: settings = get_plugin_settings(plugin) if not args['-f'] and settings and isinstance(settings, dict): warning = 'Plugin %s contains settings. Remove?' % repr(plugin) if not yes_or_no(warning): return 0 try: removed = remove_plugin(plugin) except ConfigSchemaError as ex: error('Error: Could not modify config:', ex) info(('Removed plugin %s' if removed else 'Plugin %s has already been removed.') % repr(plugin)) else: plugins = list_plugins() info('Installed plugins:\n ' + '\n '.join(plugins) if plugins else 'No plugins installed.') return 0 return 1
def main(argv=None, force_utf8=True): """ The entry point of the application. """ if force_utf8 and sys.version_info[0] == 2: reload(sys) sys.setdefaultencoding('utf-8') if argv is None: argv = sys.argv[1:] # Show specific errors if '-a' in argv or '--address' in argv: print('Use grip [options] <path> <address> instead of -a') print('See grip -h for details') return 2 if '-p' in argv or '--port' in argv: print('Use grip [options] [<path>] [<hostname>:]<port> instead of -p') print('See grip -h for details') return 2 # Parse options args = docopt(usage, argv=argv, version=version) # Handle printing version with -V (docopt handles --version) if args['-V']: print(version) return 0 # Clear the cache if args['--clear']: clear_cache() return 0 # Get password from prompt if necessary password = args['--pass'] if args['--user'] and not password: password = getpass() # Get render_inline value inline_str=args['--inline'] inline_bool=None if inline_str: inline_str=inline_str.lower() if inline_str=='true': inline_bool=True elif inline_str=='false': inline_bool=False else: print('inline argument only accepts True or False value') return 1 # Export to a file instead of running a server if args['--export']: if inline_bool==None: inline_bool=True try: export(args['<path>'], args['--user-content'], args['--context'], args['--user'], password, False, args['--wide'], inline_bool, args['<address>'], args['--api-url'], args['--title']) return 0 except ReadmeNotFoundError as ex: print('Error:', ex) return 1 # Parse arguments path, address = resolve(args['<path>'], args['<address>']) host, port = split_address(address) # Validate address if address and not host and not port: print('Error: Invalid address', repr(address)) # Run server try: if inline_bool==None: inline_bool=False serve(path, host, port, args['--user-content'], args['--context'], args['--user'], password, False, args['--wide'], inline_bool, args['--api-url'], args['--title'], not args['--norefresh'], args['--browser'], args['--quiet'], None) return 0 except ReadmeNotFoundError as ex: print('Error:', ex) return 1