mirror of
https://github.com/mynodebtc/mynode.git
synced 2024-11-15 01:49:15 +00:00
88 lines
3.1 KiB
Python
Executable File
88 lines
3.1 KiB
Python
Executable File
#!/usr/local/bin/python3
|
|
|
|
from argparse import ArgumentParser
|
|
from application_info import *
|
|
import logging
|
|
from systemd import journal
|
|
import os
|
|
|
|
log = logging.getLogger('mynode_manage_apps')
|
|
log.addHandler(journal.JournaldLogHandler())
|
|
log.setLevel(logging.INFO)
|
|
set_logger(log)
|
|
|
|
|
|
def main():
|
|
# Check running as root
|
|
if os.geteuid() != 0:
|
|
print("This script needs to be run as root.")
|
|
exit(1)
|
|
|
|
# App name arguments should be in shortname format
|
|
# mynode-manage-apps [init, openports, install <all|app_name>, uninstall <app_name>, ...]
|
|
parser = ArgumentParser(prog='mynode-manage-apps')
|
|
subparsers = parser.add_subparsers(dest='command')
|
|
|
|
parser_init = subparsers.add_parser('init', help='Initialize Apps')
|
|
|
|
parser_openports = subparsers.add_parser('openports', help='Open app ports in firewall')
|
|
|
|
parser_list = subparsers.add_parser('list', help='List dynamic apps')
|
|
|
|
parser_install = subparsers.add_parser('install', help='Install Dynamic Application')
|
|
parser_install.add_argument('app', help='App to install', default="all", nargs='*')
|
|
|
|
parser_uninstall = subparsers.add_parser('reinstall', help='Reinstall Dynamic Application')
|
|
parser_uninstall.add_argument('app', help='App to reinstall', nargs='+') # required
|
|
|
|
parser_uninstall = subparsers.add_parser('uninstall', help='Uninstall Dynamic Application')
|
|
parser_uninstall.add_argument('app', help='App to uninstall', nargs='+') # required
|
|
|
|
parser_upgrade = subparsers.add_parser('upgrade', help='Upgrade Dynamic Application')
|
|
parser_upgrade.add_argument('app', help='App to install', default="all", nargs='*')
|
|
|
|
parser_help = subparsers.add_parser('help', help='Display Help')
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.command == "init":
|
|
init_dynamic_apps()
|
|
elif args.command == "openports":
|
|
open_application_ports()
|
|
elif args.command == "list":
|
|
list_dynamic_apps()
|
|
elif args.command == "install" or \
|
|
args.command == "upgrade" or \
|
|
args.command == "reinstall":
|
|
# If no app name, install all
|
|
# Re-install requires app name (from above)
|
|
app_names = args.app
|
|
if not isinstance(app_names, list):
|
|
app_names = [app_names]
|
|
for app_name in app_names:
|
|
if args.command == "reinstall":
|
|
clear_installed_version(app_name)
|
|
if app_name != "all" and is_application_valid(app_name):
|
|
mark_app_installed(app_name)
|
|
upgrade_dynamic_apps(app_name)
|
|
elif args.command == "upgrade":
|
|
# If no app name, upgrade all
|
|
app_names = args.app
|
|
if not isinstance(app_names, list):
|
|
app_names = [app_names]
|
|
for app_name in app_names:
|
|
upgrade_dynamic_apps(app_name)
|
|
elif args.command == "uninstall":
|
|
# Requires specified application
|
|
app_names = args.app
|
|
for app_name in app_names:
|
|
uninstall_dynamic_app(app_name)
|
|
elif args.command == "help":
|
|
parser.print_help()
|
|
else:
|
|
parser.print_help()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|