mynode/rootfs/standard/usr/bin/mynode-manage-apps
2023-02-20 21:20:23 -06:00

96 lines
3.4 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_stop = subparsers.add_parser('stop', help='Stop dynamic apps')
parser_stop.add_argument('app', help='App to stop', default="all", nargs='*')
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 == "stop":
app_names = args.app
if not isinstance(app_names, list):
app_names = [app_names]
stop_dynamic_apps(app_names)
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()