def console():
 import optparse
 import textwrap
 usage = 'python web2py.py'
 description = "    web2py Web Framework startup script.\n    ATTENTION: unless a password is specified (-a 'passwd') web2py will\n    attempt to run a GUI. In this case command line options are ignored."
 description = textwrap.dedent(description)
 parser = optparse.OptionParser(usage, None, optparse.Option, ProgramVersion)
 parser.description = description
 msg = "IP address of the server (e.g., 127.0.0.1 or ::1); Note: This value is ignored when using the 'interfaces' option."
 parser.add_option('-i', '--ip', default='127.0.0.1', dest='ip', help=msg)
 parser.add_option('-p', '--port', default='8000', dest='port', type='int', help='port of server (8000)')
 parser.add_option('-G', '--GAE', default=None, dest='gae', help="'-G configure' will create app.yaml and gaehandler.py")
 msg = 'password to be used for administration (use -a "<recycle>" to reuse the last password))'
 parser.add_option('-a', '--password', default='<ask>', dest='password', help=msg)
 parser.add_option('-c', '--ssl_certificate', default='', dest='ssl_certificate', help='file that contains ssl certificate')
 parser.add_option('-k', '--ssl_private_key', default='', dest='ssl_private_key', help='file that contains ssl private key')
 msg = 'Use this file containing the CA certificate to validate X509 certificates from clients'
 parser.add_option('--ca-cert', action='store', dest='ssl_ca_certificate', default=None, help=msg)
 parser.add_option('-d', '--pid_filename', default='httpserver.pid', dest='pid_filename', help='file to store the pid of the server')
 parser.add_option('-l', '--log_filename', default='httpserver.log', dest='log_filename', help='file to log connections')
 parser.add_option('-n', '--numthreads', default=None, type='int', dest='numthreads', help='number of threads (deprecated)')
 parser.add_option('--minthreads', default=None, type='int', dest='minthreads', help='minimum number of server threads')
 parser.add_option('--maxthreads', default=None, type='int', dest='maxthreads', help='maximum number of server threads')
 parser.add_option('-s', '--server_name', default=socket.gethostname(), dest='server_name', help='server name for the web server')
 msg = 'max number of queued requests when server unavailable'
 parser.add_option('-q', '--request_queue_size', default='5', type='int', dest='request_queue_size', help=msg)
 parser.add_option('-o', '--timeout', default='10', type='int', dest='timeout', help='timeout for individual request (10 seconds)')
 parser.add_option('-z', '--shutdown_timeout', default='5', type='int', dest='shutdown_timeout', help='timeout on shutdown of server (5 seconds)')
 parser.add_option('--socket-timeout', default=5, type='int', dest='socket_timeout', help='timeout for socket (5 second)')
 parser.add_option('-f', '--folder', default=os.getcwd(), dest='folder', help='folder from which to run web2py')
 parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False, help='increase --test verbosity')
 parser.add_option('-Q', '--quiet', action='store_true', dest='quiet', default=False, help='disable all output')
 parser.add_option('-e', '--errors_to_console', action='store_true', dest='print_errors', default=False, help='log all errors to console')
 msg = 'set debug output level (0-100, 0 means all, 100 means none; default is 30)'
 parser.add_option('-D', '--debug', dest='debuglevel', default=30, type='int', help=msg)
 msg = 'run web2py in interactive shell or IPython (if installed) with specified appname (if app does not exist it will be created). APPNAME like a/c/f (c,f optional)'
 parser.add_option('-S', '--shell', dest='shell', metavar='APPNAME', help=msg)
 msg = 'run web2py in interactive shell or bpython (if installed) with specified appname (if app does not exist it will be created).\nUse combined with --shell'
 parser.add_option('-B', '--bpython', action='store_true', default=False, dest='bpython', help=msg)
 msg = 'only use plain python shell; should be used with --shell option'
 parser.add_option('-P', '--plain', action='store_true', default=False, dest='plain', help=msg)
 msg = 'auto import model files; default is False; should be used with --shell option'
 parser.add_option('-M', '--import_models', action='store_true', default=False, dest='import_models', help=msg)
 msg = 'run PYTHON_FILE in web2py environment; should be used with --shell option'
 parser.add_option('-R', '--run', dest='run', metavar='PYTHON_FILE', default='', help=msg)
 msg = 'run scheduled tasks for the specified apps: expects a list of app names as -K app1,app2,app3 or a list of app:groups as -K app1:group1:group2,app2:group1 to override specific group_names. (only strings, no spaces allowed. Requires a scheduler defined in the models'
 parser.add_option('-K', '--scheduler', dest='scheduler', default=None, help=msg)
 msg = 'run schedulers alongside webserver, needs -K app1 and -a too'
 parser.add_option('-X', '--with-scheduler', action='store_true', default=False, dest='with_scheduler', help=msg)
 msg = 'run doctests in web2py environment; TEST_PATH like a/c/f (c,f optional)'
 parser.add_option('-T', '--test', dest='test', metavar='TEST_PATH', default=None, help=msg)
 msg = 'trigger a cron run manually; usually invoked from a system crontab'
 parser.add_option('-C', '--cron', action='store_true', dest='extcron', default=False, help=msg)
 msg = 'triggers the use of softcron'
 parser.add_option('--softcron', action='store_true', dest='softcron', default=False, help=msg)
 parser.add_option('-Y', '--run-cron', action='store_true', dest='runcron', default=False, help='start the background cron process')
 parser.add_option('-J', '--cronjob', action='store_true', dest='cronjob', default=False, help='identify cron-initiated command')
 parser.add_option('-L', '--config', dest='config', default='', help='config file')
 parser.add_option('-F', '--profiler', dest='profiler_dir', default=None, help='profiler dir')
 parser.add_option('-t', '--taskbar', action='store_true', dest='taskbar', default=False, help='use web2py gui and run in taskbar (system tray)')
 parser.add_option('', '--nogui', action='store_true', default=False, dest='nogui', help='text-only, no GUI')
 msg = 'should be followed by a list of arguments to be passed to script, to be used with -S, -A must be the last option'
 parser.add_option('-A', '--args', action='store', dest='args', default=None, help=msg)
 parser.add_option('--no-banner', action='store_true', default=False, dest='nobanner', help='Do not print header banner')
 msg = 'listen on multiple addresses: "ip1:port1:key1:cert1:ca_cert1;ip2:port2:key2:cert2:ca_cert2;..." (:key:cert:ca_cert optional; no spaces; IPv6 addresses must be in square [] brackets)'
 parser.add_option('--interfaces', action='store', dest='interfaces', default=None, help=msg)
 msg = 'runs web2py tests'
 parser.add_option('--run_system_tests', action='store_true', dest='run_system_tests', default=False, help=msg)
 msg = 'adds coverage reporting (needs --run_system_tests), python 2.7 and the coverage module installed. You can alter the default path setting the environmental var "COVERAGE_PROCESS_START". By default it takes gluon/tests/coverage.ini'
 parser.add_option('--with_coverage', action='store_true', dest='with_coverage', default=False, help=msg)
 if ('-A' in sys.argv):
  k = sys.argv.index('-A')
 elif ('--args' in sys.argv):
  k = sys.argv.index('--args')
 else:
  k = len(sys.argv)
 (sys.argv, other_args) = (sys.argv[:k], sys.argv[(k + 1):])
 (options, args) = parser.parse_args()
 options.args = ([options.run] + other_args)
 copy_options = copy.deepcopy(options)
 copy_options.password = '******'
 global_settings.cmd_options = copy_options
 global_settings.cmd_args = args
 if options.gae:
  if (not os.path.exists('app.yaml')):
   name = raw_input('Your GAE app name: ')
   content = open(os.path.join('examples', 'app.example.yaml'), 'rb').read()
   open('app.yaml', 'wb').write(content.replace('yourappname', name))
  else:
   print('app.yaml alreday exists in the web2py folder')
  if (not os.path.exists('gaehandler.py')):
   content = open(os.path.join('handlers', 'gaehandler.py'), 'rb').read()
   open('gaehandler.py', 'wb').write(content)
  else:
   print('gaehandler.py alreday exists in the web2py folder')
  sys.exit(0)
 try:
  options.ips = list(set([addrinfo[4][0] for addrinfo in getipaddrinfo(socket.getfqdn()) if (not is_loopback_ip_address(addrinfo=addrinfo))]))
 except socket.gaierror:
  options.ips = []
 if options.run_system_tests:
  run_system_tests(options)
 if options.quiet:
  capture = StringIO()
  sys.stdout = capture
  logger.setLevel((logging.CRITICAL + 1))
 else:
  logger.setLevel(options.debuglevel)
 if (options.config[(-3):] == '.py'):
  options.config = options.config[:(-3)]
 if options.cronjob:
  global_settings.cronjob = True
  options.plain = True
  options.nobanner = True
  options.nogui = True
 options.folder = os.path.abspath(options.folder)
 if isinstance(options.interfaces, str):
  interfaces = options.interfaces.split(';')
  options.interfaces = []
  for interface in interfaces:
   if interface.startswith('['):
    (ip, if_remainder) = interface.split(']', 1)
    ip = ip[1:]
    if_remainder = if_remainder[1:].split(':')
    if_remainder[0] = int(if_remainder[0])
    options.interfaces.append(tuple(([ip] + if_remainder)))
   else:
    interface = interface.split(':')
    interface[1] = int(interface[1])
    options.interfaces.append(tuple(interface))
 scheduler = []
 options.scheduler_groups = None
 if isinstance(options.scheduler, str):
  if (':' in options.scheduler):
   for opt in options.scheduler.split(','):
    scheduler.append(opt.split(':'))
   options.scheduler = ','.join([app[0] for app in scheduler])
   options.scheduler_groups = scheduler
 if ((options.numthreads is not None) and (options.minthreads is None)):
  options.minthreads = options.numthreads
 create_welcome_w2p()
 if (not options.cronjob):
  if (not os.path.exists('applications/__init__.py')):
   write_file('applications/__init__.py', '')
 return (options, args)

def console ( ) : import optparse import textwrap usage = 'python web2py.py' description = "    web2py Web Framework startup script.\n    ATTENTION: unless a password is specified (-a 'passwd') web2py will\n    attempt to run a GUI. In this case command line options are ignored." description = textwrap . dedent ( description ) parser = optparse . OptionParser ( usage , None , optparse . Option , ProgramVersion ) parser . description = description msg = "IP address of the server (e.g., 127.0.0.1 or ::1); Note: This value is ignored when using the 'interfaces' option." parser . add_option ( '-i' , '--ip' , default = '127.0.0.1' , dest = 'ip' , help = msg ) parser . add_option ( '-p' , '--port' , default = '8000' , dest = 'port' , type = 'int' , help = 'port of server (8000)' ) parser . add_option ( '-G' , '--GAE' , default = None , dest = 'gae' , help = "'-G configure' will create app.yaml and gaehandler.py" ) msg = 'password to be used for administration (use -a "<recycle>" to reuse the last password))' parser . add_option ( '-a' , '--password' , default = '<ask>' , dest = 'password' , help = msg ) parser . add_option ( '-c' , '--ssl_certificate' , default = '' , dest = 'ssl_certificate' , help = 'file that contains ssl certificate' ) parser . add_option ( '-k' , '--ssl_private_key' , default = '' , dest = 'ssl_private_key' , help = 'file that contains ssl private key' ) msg = 'Use this file containing the CA certificate to validate X509 certificates from clients' parser . add_option ( '--ca-cert' , action = 'store' , dest = 'ssl_ca_certificate' , default = None , help = msg ) parser . add_option ( '-d' , '--pid_filename' , default = 'httpserver.pid' , dest = 'pid_filename' , help = 'file to store the pid of the server' ) parser . add_option ( '-l' , '--log_filename' , default = 'httpserver.log' , dest = 'log_filename' , help = 'file to log connections' ) parser . add_option ( '-n' , '--numthreads' , default = None , type = 'int' , dest = 'numthreads' , help = 'number of threads (deprecated)' ) parser . add_option ( '--minthreads' , default = None , type = 'int' , dest = 'minthreads' , help = 'minimum number of server threads' ) parser . add_option ( '--maxthreads' , default = None , type = 'int' , dest = 'maxthreads' , help = 'maximum number of server threads' ) parser . add_option ( '-s' , '--server_name' , default = socket . gethostname ( ) , dest = 'server_name' , help = 'server name for the web server' ) msg = 'max number of queued requests when server unavailable' parser . add_option ( '-q' , '--request_queue_size' , default = '5' , type = 'int' , dest = 'request_queue_size' , help = msg ) parser . add_option ( '-o' , '--timeout' , default = '10' , type = 'int' , dest = 'timeout' , help = 'timeout for individual request (10 seconds)' ) parser . add_option ( '-z' , '--shutdown_timeout' , default = '5' , type = 'int' , dest = 'shutdown_timeout' , help = 'timeout on shutdown of server (5 seconds)' ) parser . add_option ( '--socket-timeout' , default = 5 , type = 'int' , dest = 'socket_timeout' , help = 'timeout for socket (5 second)' ) parser . add_option ( '-f' , '--folder' , default = os . getcwd ( ) , dest = 'folder' , help = 'folder from which to run web2py' ) parser . add_option ( '-v' , '--verbose' , action = 'store_true' , dest = 'verbose' , default = False , help = 'increase --test verbosity' ) parser . add_option ( '-Q' , '--quiet' , action = 'store_true' , dest = 'quiet' , default = False , help = 'disable all output' ) parser . add_option ( '-e' , '--errors_to_console' , action = 'store_true' , dest = 'print_errors' , default = False , help = 'log all errors to console' ) msg = 'set debug output level (0-100, 0 means all, 100 means none; default is 30)' parser . add_option ( '-D' , '--debug' , dest = 'debuglevel' , default = 30 , type = 'int' , help = msg ) msg = 'run web2py in interactive shell or IPython (if installed) with specified appname (if app does not exist it will be created). APPNAME like a/c/f (c,f optional)' parser . add_option ( '-S' , '--shell' , dest = 'shell' , metavar = 'APPNAME' , help = msg ) msg = 'run web2py in interactive shell or bpython (if installed) with specified appname (if app does not exist it will be created).\nUse combined with --shell' parser . add_option ( '-B' , '--bpython' , action = 'store_true' , default = False , dest = 'bpython' , help = msg ) msg = 'only use plain python shell; should be used with --shell option' parser . add_option ( '-P' , '--plain' , action = 'store_true' , default = False , dest = 'plain' , help = msg ) msg = 'auto import model files; default is False; should be used with --shell option' parser . add_option ( '-M' , '--import_models' , action = 'store_true' , default = False , dest = 'import_models' , help = msg ) msg = 'run PYTHON_FILE in web2py environment; should be used with --shell option' parser . add_option ( '-R' , '--run' , dest = 'run' , metavar = 'PYTHON_FILE' , default = '' , help = msg ) msg = 'run scheduled tasks for the specified apps: expects a list of app names as -K app1,app2,app3 or a list of app:groups as -K app1:group1:group2,app2:group1 to override specific group_names. (only strings, no spaces allowed. Requires a scheduler defined in the models' parser . add_option ( '-K' , '--scheduler' , dest = 'scheduler' , default = None , help = msg ) msg = 'run schedulers alongside webserver, needs -K app1 and -a too' parser . add_option ( '-X' , '--with-scheduler' , action = 'store_true' , default = False , dest = 'with_scheduler' , help = msg ) msg = 'run doctests in web2py environment; TEST_PATH like a/c/f (c,f optional)' parser . add_option ( '-T' , '--test' , dest = 'test' , metavar = 'TEST_PATH' , default = None , help = msg ) msg = 'trigger a cron run manually; usually invoked from a system crontab' parser . add_option ( '-C' , '--cron' , action = 'store_true' , dest = 'extcron' , default = False , help = msg ) msg = 'triggers the use of softcron' parser . add_option ( '--softcron' , action = 'store_true' , dest = 'softcron' , default = False , help = msg ) parser . add_option ( '-Y' , '--run-cron' , action = 'store_true' , dest = 'runcron' , default = False , help = 'start the background cron process' ) parser . add_option ( '-J' , '--cronjob' , action = 'store_true' , dest = 'cronjob' , default = False , help = 'identify cron-initiated command' ) parser . add_option ( '-L' , '--config' , dest = 'config' , default = '' , help = 'config file' ) parser . add_option ( '-F' , '--profiler' , dest = 'profiler_dir' , default = None , help = 'profiler dir' ) parser . add_option ( '-t' , '--taskbar' , action = 'store_true' , dest = 'taskbar' , default = False , help = 'use web2py gui and run in taskbar (system tray)' ) parser . add_option ( '' , '--nogui' , action = 'store_true' , default = False , dest = 'nogui' , help = 'text-only, no GUI' ) msg = 'should be followed by a list of arguments to be passed to script, to be used with -S, -A must be the last option' parser . add_option ( '-A' , '--args' , action = 'store' , dest = 'args' , default = None , help = msg ) parser . add_option ( '--no-banner' , action = 'store_true' , default = False , dest = 'nobanner' , help = 'Do not print header banner' ) msg = 'listen on multiple addresses: "ip1:port1:key1:cert1:ca_cert1;ip2:port2:key2:cert2:ca_cert2;..." (:key:cert:ca_cert optional; no spaces; IPv6 addresses must be in square [] brackets)' parser . add_option ( '--interfaces' , action = 'store' , dest = 'interfaces' , default = None , help = msg ) msg = 'runs web2py tests' parser . add_option ( '--run_system_tests' , action = 'store_true' , dest = 'run_system_tests' , default = False , help = msg ) msg = 'adds coverage reporting (needs --run_system_tests), python 2.7 and the coverage module installed. You can alter the default path setting the environmental var "COVERAGE_PROCESS_START". By default it takes gluon/tests/coverage.ini' parser . add_option ( '--with_coverage' , action = 'store_true' , dest = 'with_coverage' , default = False , help = msg ) if ( '-A' in sys . argv ) : k = sys . argv . index ( '-A' ) elif ( '--args' in sys . argv ) : k = sys . argv . index ( '--args' ) else : k = len ( sys . argv ) ( sys . argv , other_args ) = ( sys . argv [ : k ] , sys . argv [ ( k + 1 ) : ] ) ( options , args ) = parser . parse_args ( ) options . args = ( [ options . run ] + other_args ) copy_options = copy . deepcopy ( options ) copy_options . password = '******' global_settings . cmd_options = copy_options global_settings . cmd_args = args if options . gae : if ( not os . path . exists ( 'app.yaml' ) ) : name = raw_input ( 'Your GAE app name: ' ) content = open ( os . path . join ( 'examples' , 'app.example.yaml' ) , 'rb' ) . read ( ) open ( 'app.yaml' , 'wb' ) . write ( content . replace ( 'yourappname' , name ) ) else : print ( 'app.yaml alreday exists in the web2py folder' ) if ( not os . path . exists ( 'gaehandler.py' ) ) : content = open ( os . path . join ( 'handlers' , 'gaehandler.py' ) , 'rb' ) . read ( ) open ( 'gaehandler.py' , 'wb' ) . write ( content ) else : print ( 'gaehandler.py alreday exists in the web2py folder' ) sys . exit ( 0 ) try : options . ips = list ( set ( [ addrinfo [ 4 ] [ 0 ] for addrinfo in getipaddrinfo ( socket . getfqdn ( ) ) if ( not is_loopback_ip_address ( addrinfo = addrinfo ) ) ] ) ) except socket . gaierror : options . ips = [ ] if options . run_system_tests : run_system_tests ( options ) if options . quiet : capture = StringIO ( ) sys . stdout = capture logger . setLevel ( ( logging . CRITICAL + 1 ) ) else : logger . setLevel ( options . debuglevel ) if ( options . config [ ( - 3 ) : ] == '.py' ) : options . config = options . config [ : ( - 3 ) ] if options . cronjob : global_settings . cronjob = True options . plain = True options . nobanner = True options . nogui = True options . folder = os . path . abspath ( options . folder ) if isinstance ( options . interfaces , str ) : interfaces = options . interfaces . split ( ';' ) options . interfaces = [ ] for interface in interfaces : if interface . startswith ( '[' ) : ( ip , if_remainder ) = interface . split ( ']' , 1 ) ip = ip [ 1 : ] if_remainder = if_remainder [ 1 : ] . split ( ':' ) if_remainder [ 0 ] = int ( if_remainder [ 0 ] ) options . interfaces . append ( tuple ( ( [ ip ] + if_remainder ) ) ) else : interface = interface . split ( ':' ) interface [ 1 ] = int ( interface [ 1 ] ) options . interfaces . append ( tuple ( interface ) ) scheduler = [ ] options . scheduler_groups = None if isinstance ( options . scheduler , str ) : if ( ':' in options . scheduler ) : for opt in options . scheduler . split ( ',' ) : scheduler . append ( opt . split ( ':' ) ) options . scheduler = ',' . join ( [ app [ 0 ] for app in scheduler ] ) options . scheduler_groups = scheduler if ( ( options . numthreads is not None ) and ( options . minthreads is None ) ) : options . minthreads = options . numthreads create_welcome_w2p ( ) if ( not options . cronjob ) : if ( not os . path . exists ( 'applications/__init__.py' ) ) : write_file ( 'applications/__init__.py' , '' ) return ( options , args )
call with arguments .