You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
8.5 KiB

10 years ago
"""EasyEngine site controller."""
from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook
import sys
10 years ago
def ee_site_hook(app):
# do something with the ``app`` object here.
pass
class EESiteController(CementBaseController):
class Meta:
label = 'site'
stacked_on = 'base'
stacked_type = 'nested'
description = ('site command manages website configuration'
'with the help of the following subcommands')
arguments = [
(['site_name'],
dict(help='website name')),
]
@expose(hide=True)
def default(self):
# TODO Default action for ee site command
print("Inside EESiteController.default().")
@expose(help="delete site example.com")
def delete(self):
# TODO Write code for ee site delete command here
print("Inside EESiteController.delete().")
@expose(help="enable site example.com")
def enable(self):
# TODO Write code for ee site enable command here
print("Inside EESiteController.enable().")
@expose(help="disable site example.com")
def disable(self):
# TODO Write code for ee site disable command here
print("Inside EESiteController.disable().")
@expose(help="get example.com information")
def info(self):
# TODO Write code for ee site info command here
print("Inside EESiteController.info().")
@expose(help="Monitor example.com logs")
def log(self):
# TODO Write code for ee site log command here
print("Inside EESiteController.log().")
@expose(help="Edit example.com's nginx configuration")
def edit(self):
# TODO Write code for ee site edit command here
print("Inside EESiteController.edit().")
@expose(help="Display example.com's nginx configuration")
def show(self):
# TODO Write code for ee site edit command here
print("Inside EESiteController.show().")
@expose(help="list sites currently available")
def list(self):
# TODO Write code for ee site list command here
print("Inside EESiteController.list().")
@expose(help="change to example.com's webroot")
def cd(self):
# TODO Write code for ee site cd here
print("Inside EESiteController.cd().")
class EESiteCreateController(CementBaseController):
class Meta:
label = 'create'
stacked_on = 'site'
stacked_type = 'nested'
description = 'create command manages website configuration with the \
help of the following subcommands'
arguments = [
(['site_name'],
dict(help='the notorious foo option')),
(['--html'],
dict(help="html site", action='store_true')),
(['--php'],
dict(help="php site", action='store_true')),
(['--mysql'],
dict(help="mysql site", action='store_true')),
(['--wp'],
dict(help="wordpress site", action='store_true')),
(['--wpsubdir'],
dict(help="wpsubdir site", action='store_true')),
(['--wpsubdomain'],
dict(help="wpsubdomain site", action='store_true')),
(['--w3tc'],
dict(help="w3tc", action='store_true')),
(['--wpfc'],
dict(help="wpfc", action='store_true')),
(['--wpsc'],
dict(help="wpsc", action='store_true')),
10 years ago
]
@expose(hide=True)
def default(self):
# TODO Default action for ee site command
# data = dict(foo='EESiteCreateController.default().')
# self.app.render((data), 'default.mustache')
if self.app.pargs.html:
data = dict(site_name=self.app.pargs.site_name,
static=True, basic=False, wp=False, w3tc=False,
wpfc=False, wpsc=False, multisite=False,
wpsubdir=False)
if self.app.pargs.php:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=True, wp=False, w3tc=False,
wpfc=False, wpsc=False, multisite=False,
wpsubdir=False)
if self.app.pargs.mysql:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=True, wp=False, w3tc=False,
wpfc=False, wpsc=False, multisite=False,
wpsubdir=False)
if (self.app.pargs.wp or self.app.pargs.w3tc or self.app.pargs.wpfc
or self.app.pargs.wpsc):
if self.app.pargs.wp:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=True, wp=True, w3tc=False,
wpfc=False, wpsc=False, multisite=False,
wpsubdir=False)
if self.app.pargs.w3tc:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=False, wp=True, w3tc=True,
wpfc=False, wpsc=False, multisite=False,
wpsubdir=False)
if self.app.pargs.wpfc:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=False, wp=True, w3tc=False,
wpfc=True, wpsc=False, multisite=False,
wpsubdir=False)
if self.app.pargs.wpsc:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=False, wp=True, w3tc=False,
wpfc=False, wpsc=True, multisite=False,
wpsubdir=False)
if self.app.pargs.wpsubdir:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=True, wp=True, w3tc=False,
wpfc=False, wpsc=False, multisite=True,
wpsubdir=True)
if self.app.pargs.wpsubdomain:
data = dict(site_name=self.app.pargs.site_name,
static=False, basic=True, wp=True, w3tc=False,
wpfc=False, wpsc=False, multisite=True,
wpsubdir=False)
self.app.render((data), 'virtualconf.mustache')
10 years ago
class EESiteUpdateController(CementBaseController):
class Meta:
label = 'update'
stacked_on = 'site'
stacked_type = 'nested'
description = 'update command manages website configuration with the \
help of the following subcommands'
arguments = [
(['site_name'],
dict(help='website name')),
(['--html'],
dict(help="html site", action='store_true')),
(['--php'],
dict(help="php site", action='store_true')),
(['--mysql'],
dict(help="mysql site", action='store_true')),
(['--wp'],
dict(help="wordpress site", action='store_true')),
(['--wpsubdir'],
dict(help="wpsubdir site", action='store_true')),
(['--wpsubdomain'],
dict(help="wpsubdomain site", action='store_true')),
(['--w3tc'],
dict(help="w3tc", action='store_true')),
(['--wpfc'],
dict(help="wpfc", action='store_true')),
(['--wpsc'],
dict(help="wpsc", action='store_true')),
10 years ago
]
@expose(help="update example.com")
def default(self):
# TODO Write code for ee site update here
print("Inside EESiteUpdateController.default().")
# site command Options and subcommand calls and definations to
# mention here
# If using an output handler such as 'mustache', you could also
# render a data dictionary using a template. For example:
#
# data = dict(foo='bar')
# self.app.render(data, 'default.mustache')
#
#
# The 'default.mustache' file would be loaded from
# ``ee.cli.templates``, or ``/var/lib/ee/templates/``.
#
def load(app):
# register the plugin class.. this only happens if the plugin is enabled
handler.register(EESiteController)
handler.register(EESiteCreateController)
handler.register(EESiteUpdateController)
# register a hook (function) to run after arguments are parsed.
hook.register('post_argument_parsing', ee_site_hook)