def self_setup(opt, root=None): " Set up Pyxer in the virtual environment " # Find VM if not root: root = find_root() if not root: raise Error, "VirtualENV not found" here = os.path.dirname(__file__) # Find site_packages folder site_packages = os.path.join(root, 'site-packages') # If the directory does not exist we need to install the basic stuff if not os.path.isdir(site_packages): install_package(root, 'setuptools') install_package(root, 'beaker') install_package(root, 'paste') # Remove old installation pyxer_dir = os.path.join(site_packages, "pyxer") if os.path.isdir(pyxer_dir): log.info("Remove Pyxer directory %r", pyxer_dir) pass # Copy package log.info("Copy from %r to %r", here, pyxer_dir) utils.copy_python(here, pyxer_dir) # This is needed for the paster app egg_dir = os.path.join(site_packages, "pyxer.egg-info") if not os.path.isdir(egg_dir): os.makedirs(egg_dir) open(os.path.join(egg_dir, "entry_points.txt"), "w").write(ENTRY_POINTS_TXT) # Create pyxer-app.py pyxer_starter = os.path.join(root, 'pyxer-app.py') if opt.force or (not os.path.isfile(pyxer_starter)): log.info("Create %r", pyxer_starter) open(pyxer_starter, "w").write(PYXERAPP_PY)
def self_setup(opt, root = None): " Set up Pyxer in the virtual environment " # Find VM if not root: root = find_root() if not root: raise Error, "VirtualENV not found" here = os.path.dirname(__file__) # Find site_packages folder site_packages = os.path.join(root, 'site-packages') # If the directory does not exist we need to install the basic stuff if not os.path.isdir(site_packages): install_package(root, 'paste') install_package(root, 'setuptools') install_package(root, 'beaker') # Remove old installation pyxer_dir = os.path.join(site_packages, "pyxer") if os.path.isdir(pyxer_dir): log.info("Remove Pyxer directory %r", pyxer_dir) pass # Copy package log.info("Copy from %r to %r", here, pyxer_dir) utils.copy_python(here, pyxer_dir) # This is needed for the paster app egg_dir = os.path.join(site_packages, "pyxer.egg-info") if not os.path.isdir(egg_dir): os.makedirs(egg_dir) open(os.path.join(egg_dir, "entry_points.txt"), "w").write(ENTRY_POINTS_TXT) # Create pyxer-app.py pyxer_starter = os.path.join(root, 'pyxer-app.py') if opt.force or (not os.path.isfile(pyxer_starter)): log.info("Create %r", pyxer_starter) open(pyxer_starter, "w").write(PYXERAPP_PY)
def command(engine=None): parser = OptParser( # "usage: %prog [options] command", "Usage: pyxer [options] command", description=_description, version=VERSION_STR, # epilog="Neu\n\r\n" + 20*"hallo ", ) parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="Do not print status messages to stdout") #parser.add_option( # "-f", # "--force", # action="store_false", # dest="force", # default=True, # help="don't print status messages to stdout") parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Activate debug logging") if not engine: parser.add_option( "--engine", dest="engine", default="", help="Engine that will be used: gae (default), wsgi, paster") parser.add_option("--port", dest="port", default="8080", help="serving on port") parser.add_option("--host", dest="host", default="0.0.0.0", help="Serving on host") parser.add_option("-r", "--reload", dest="reload", action="store_true", help="Reload on changing files") #parser.add_option( # "-u", # "--update", # dest = "update", # action = "store_true", # help = "update suplementary data and files") parser.add_option("-U", "--develop", dest="develop", action="store_true", help="Update projects Pyxer version") parser.add_option("-c", "--clear", dest="clear", action="store_true", help="Empty local GAE datastore") parser.add_option("-f", "--force", dest="force", action="store_true", help="Force updates; overwrites pyxer-app.py") (opt, args) = parser.parse_args() showlog(opt.debug) #config_default = { # "pyxer.debug": (cBOOL, False), # "pyxer.sessions": (cBOOL, False), # "pyxer.engine": (cSTRING, ""), # "pyxer.templating": (cSTRING, ""), # "pyxer.host": (cSTRING, "127.0.0.1"), # "pyxer.port": (cINT, 8080, 0, 65536), # } if (len(args) < 1) or (len(args) > 2): log.debug("Minimum 1 argument, maximum 2") parser.print_help() # parser.error("incorrect number of arguments") sys.exit(1) command = args[0].lower() # Directory argument if len(args) == 2: here = os.path.abspath(args[1]) else: here = os.getcwd() # Get engine if engine: opt.engine = engine log.debug("Command %r for engine %r in directory %r", command, engine, here) if opt.engine in ("paster", "paste", "p"): print "Paster" opt.engine = "paster" import pyxer.paster as engine elif opt.engine in ("wsgi", "w"): print "Python WSGI" engine = None else: print "Google AppEngine" opt.engine = "gae" import pyxer.gae as engine # Update version if opt.develop and command not in ("setup", "create", "init", "pyxer"): import pyxer.create pyxer.create.self_setup(opt) # Serve if command == "serve": if engine: engine.serve(opt) else: if opt.debug: logging.basicConfig(level=logging.DEBUG) import pyxer.app pyxer.app.serve(opt) # Setup elif (command in ("setup", "create", "init")): import pyxer.create pyxer.create.create(opt, here) # Install elif (command in ("install")): if len(args) == 2: install_package(os.getcwd(), args[1]) # ZIP Install elif (command in ("zipinstall")): if len(args) == 2: install_package(os.getcwd(), args[1], zip=True) # Activate # elif (command in ("open", "activate", "vm")): # # root = find_root() # if not root: # print "No project found" # elif iswin: # # call_subprocess([os.path.join(root, "scripts", "activate.bat")]) # system("start " + os.path.join(root, "scripts", "activate.bat")) # else: # print "IMPORTANT! Leave VM with command 'exit'." # call_subprocess(["bash", "--init-file", os.path.join(root, "bin", "activate")], raise_on_returncode = False) # Deactivate # elif (command == "close" or command == "deactivate"): # # root = find_root() # if not root: # print "No project found" # elif iswin: # system(os.path.join(root, "scripts", "deactivate.bat")) # else: # pass # Daemon elif command == "start" and opt.engine == "paster": engine.serve(opt, daemon="start") elif command == "stop" and opt.engine == "paster": engine.serve(opt, daemon="stop") elif command == "status" and opt.engine == "paster": engine.serve(opt, daemon="status") elif (command in ("reload", "restart")) and opt.engine == "paster": engine.serve(opt, daemon="restart") # GAE Upload elif (command in ("upload", "deploy", "push")) and opt.engine == "gae": engine.upload(opt) # GAE empty elif (command in ("push_empty")) and opt.engine == "gae": if len(args) == 2: name = args[1] import tempfile tmpdir = tempfile.mkdtemp() print "Empty project", name, "created at", tmpdir tmpfle = os.path.join(tmpdir, 'app.yaml') open(tmpfle, 'w').write(""" application: %s version: 0 runtime: python api_version: 1 handlers: - url: / static_dir: empty """.strip() % name) engine.upload(opt, root=tmpdir) os.remove(tmpfle) os.rmdir(tmpdir) print print "ATTENTION: Go to GAE dasboard/versions and switch to version '0' to turn off your project" else: print '*** Project name needed as last argument' # GAE fix #elif (command == "fix" or command == "fixup") and opt.engine == "gae": # engine.fix() # Setup Pyxer elif command in ("pyxer", "update", "up"): import pyxer.create pyxer.create.self_setup(opt) else: parser.print_help() sys.exit(1)
def command(engine = None): parser = OptParser( # "usage: %prog [options] command", "Usage: pyxer [options] command", description = _description, version = VERSION_STR, # epilog="Neu\n\r\n" + 20*"hallo ", ) parser.add_option( "-q", "--quiet", action = "store_false", dest = "verbose", default = True, help = "Do not print status messages to stdout") #parser.add_option( # "-f", # "--force", # action="store_false", # dest="force", # default=True, # help="don't print status messages to stdout") parser.add_option( "-d", "--debug", action = "store_true", dest = "debug", default = False, help = "Activate debug logging") if not engine: parser.add_option( "--engine", dest = "engine", default = "", help = "Engine that will be used: gae (default), wsgi, paster") parser.add_option( "--port", dest = "port", default = "8080", help = "serving on port") parser.add_option( "--host", dest = "host", default = "0.0.0.0", help = "Serving on host") parser.add_option( "-r", "--reload", dest = "reload", action = "store_true", help = "Reload on changing files") #parser.add_option( # "-u", # "--update", # dest = "update", # action = "store_true", # help = "update suplementary data and files") parser.add_option( "-U", "--develop", dest = "develop", action = "store_true", help = "Update projects Pyxer version") parser.add_option( "-c", "--clear", dest = "clear", action = "store_true", help = "Empty local GAE datastore") parser.add_option( "-f", "--force", dest = "force", action = "store_true", help = "Force updates; overwrites pyxer-app.py") (opt, args) = parser.parse_args() showlog(opt.debug) #config_default = { # "pyxer.debug": (cBOOL, False), # "pyxer.sessions": (cBOOL, False), # "pyxer.engine": (cSTRING, ""), # "pyxer.templating": (cSTRING, ""), # "pyxer.host": (cSTRING, "127.0.0.1"), # "pyxer.port": (cINT, 8080, 0, 65536), # } if (len(args) < 1) or (len(args) > 2): log.debug("Minimum 1 argument, maximum 2") parser.print_help() # parser.error("incorrect number of arguments") sys.exit(1) command = args[0].lower() # Directory argument if len(args) == 2: here = os.path.abspath(args[1]) else: here = os.getcwd() # Get engine if engine: opt.engine = engine log.debug("Command %r for engine %r in directory %r", command, engine, here) if opt.engine in ("wsgi", "w"): print "Python WSGI" # engine = None elif opt.engine in ("paster", "paste", "p"): print "Paster" opt.engine = "paster" import pyxer.paster as engine else: print "Google AppEngine" opt.engine = "gae" import pyxer.gae as engine # Update version if opt.develop and command not in ("setup", "create", "init", "pyxer"): import pyxer.create pyxer.create.self_setup(opt) # Serve if command == "serve": if engine: engine.serve(opt) else: if opt.debug: logging.basicConfig(level = logging.DEBUG) import pyxer.app pyxer.app.serve(opt) # Setup elif (command in ("setup", "create", "init")): import pyxer.create pyxer.create.create(opt, here) # Install elif (command in ("install")): if len(args)==2: install_package(os.getcwd(), args[1]) # ZIP Install elif (command in ("zipinstall")): if len(args)==2: install_package(os.getcwd(), args[1], zip=True) # Activate # elif (command in ("open", "activate", "vm")): # # root = find_root() # if not root: # print "No project found" # elif iswin: # # call_subprocess([os.path.join(root, "scripts", "activate.bat")]) # system("start " + os.path.join(root, "scripts", "activate.bat")) # else: # print "IMPORTANT! Leave VM with command 'exit'." # call_subprocess(["bash", "--init-file", os.path.join(root, "bin", "activate")], raise_on_returncode = False) # Deactivate # elif (command == "close" or command == "deactivate"): # # root = find_root() # if not root: # print "No project found" # elif iswin: # system(os.path.join(root, "scripts", "deactivate.bat")) # else: # pass # Daemon elif command == "start" and opt.engine == "paster": engine.serve(opt, daemon = "start") elif command == "stop" and opt.engine == "paster": engine.serve(opt, daemon = "stop") elif command == "status" and opt.engine == "paster": engine.serve(opt, daemon = "status") elif (command in ("reload", "restart")) and opt.engine == "paster": engine.serve(opt, daemon = "restart") # GAE Upload elif (command in ("upload", "deploy", "push")) and opt.engine == "gae": engine.upload(opt) # GAE empty elif (command in ("push_empty")) and opt.engine == "gae": if len(args)==2: name = args[1] import tempfile tmpdir = tempfile.mkdtemp() print "Empty project", name , "created at", tmpdir tmpfle = os.path.join(tmpdir, 'app.yaml') open(tmpfle, 'w').write(""" application: %s version: 0 runtime: python api_version: 1 handlers: - url: / static_dir: empty """.strip() % name) engine.upload(opt, root=tmpdir) os.remove(tmpfle) os.rmdir(tmpdir) print print "ATTENTION: Go to GAE dasboard/versions and switch to version '0' to turn off your project" else: print '*** Project name needed as last argument' # GAE fix #elif (command == "fix" or command == "fixup") and opt.engine == "gae": # engine.fix() # Setup Pyxer elif command in ("pyxer", "update", "up"): import pyxer.create pyxer.create.self_setup(opt) else: parser.print_help() sys.exit(1)