73 lines
No EOL
2.9 KiB
Python
73 lines
No EOL
2.9 KiB
Python
from core.controllers.ApplicationVersionController import ApplicationVersionController
|
|
from core.models.session.Application import Application
|
|
from cli.helpers import parse_application_argument
|
|
from cli.observers import application_version_observer, connection_observer
|
|
import pprint
|
|
|
|
NAME = 'application'
|
|
|
|
|
|
def register(subparsers):
|
|
parser = subparsers.add_parser(NAME)
|
|
subs = parser.add_subparsers(title='subcommands', dest='subcommand')
|
|
|
|
base = _base_parser()
|
|
|
|
list_parser = subs.add_parser('list')
|
|
list_parser.add_argument('--code', '-c')
|
|
|
|
subs.add_parser('show', parents=[base])
|
|
|
|
install_parser = subs.add_parser('install', parents=[base])
|
|
install_parser.add_argument('--reinstall', '-r', action='store_true')
|
|
|
|
subs.add_parser('uninstall', parents=[base])
|
|
|
|
return parser
|
|
|
|
|
|
def handle(arguments, main_parser):
|
|
if arguments.subcommand is None:
|
|
main_parser.parse_args(['application', '--help'])
|
|
return
|
|
|
|
if arguments.subcommand == 'list':
|
|
if arguments.code:
|
|
application = Application.find(arguments.code)
|
|
if application is not None:
|
|
pprint.pp(ApplicationVersionController.get_all(application))
|
|
else:
|
|
main_parser.error('the following argument should be a valid reference: --code/-c')
|
|
else:
|
|
pprint.pp(ApplicationVersionController.get_all())
|
|
|
|
elif arguments.subcommand == 'show':
|
|
details = parse_application_argument(arguments.application)
|
|
app_version = ApplicationVersionController.get(details.get('application_code'), details.get('version_number'))
|
|
if app_version is not None:
|
|
pprint.pp(app_version)
|
|
else:
|
|
main_parser.error('the following argument should be a valid reference: --application/-a')
|
|
|
|
elif arguments.subcommand == 'install':
|
|
details = parse_application_argument(arguments.application)
|
|
app_version = ApplicationVersionController.get(details.get('application_code'), details.get('version_number'))
|
|
if app_version is not None:
|
|
ApplicationVersionController.install(app_version, arguments.reinstall, application_version_observer=application_version_observer, connection_observer=connection_observer)
|
|
else:
|
|
main_parser.error('the following argument should be a valid reference: --application/-a')
|
|
|
|
elif arguments.subcommand == 'uninstall':
|
|
details = parse_application_argument(arguments.application)
|
|
app_version = ApplicationVersionController.get(details.get('application_code'), details.get('version_number'))
|
|
if app_version is not None:
|
|
ApplicationVersionController.uninstall(app_version)
|
|
else:
|
|
main_parser.error('the following argument should be a valid reference: --application/-a')
|
|
|
|
|
|
def _base_parser():
|
|
import argparse
|
|
p = argparse.ArgumentParser(add_help=False)
|
|
p.add_argument('--application', '-a', required=True)
|
|
return p |