Source code for mylinux.__main__

#!/usr/bin/env python3
"""
Main file for all entry points for this project.
"""

from __future__ import absolute_import
from __future__ import print_function

from docopt import docopt
from colorama import Fore, Style
import traceback
import sys

from mylinux.Controller import Controller

from mylinux.libs import AppErr
from mylinux.model import Files
from mylinux.model.config import Installed
from mylinux.constants import error as ERR
from mylinux.constants import setup as SETUP
from mylinux.constants import runTime as RUNTIME

Fore.UNDERLINE = '\033[4m'

[docs]def main(ARGV=None,TESTING=False): """Main mylinux entry point method. Args: ARGV (arr): User defined sys.argv array. TESTING (boo): If true reset all singletones for possible rerun. Raises: AppErr.model : If controller produce error obout mylinux models. AppErr.user : If user make error. AppErr.developer : If developer makes mistake. Exception : If unknown error is produced by controller. Other Parameters: If testing reset singletones. Init main controller. Call controller Send exit codes to shell. Note: Method will produce at the end of the executing ``exit code`` that will be passed to the shell. """ try: if TESTING: Controller._Controller__inited = False Files._Files__inited = False Installed._Installed__inited = False interface = """ Description: {{setup-description}} Usage: mylinux select (purge | install) mylinux select config (update | install | purge) mylinux (install | purge) <package>... mylinux config (update | install | purge) <package>... mylinux create <package> mylinux logs <package> mylinux exec <script> mylinux save mylinux test mylinux check mylinux (-h | --help) mylinux (-v | --version) Options: -v --version Program version. -h --help Extensive help message. """.replace('\t\t\t', '') args = docopt( interface.replace('{{setup-description}}', SETUP.description), argv=ARGV, version=SETUP.name + ' version ' + SETUP.version ) Mylinux = Controller(RUNTIME.filesPath) if args['select']: if args['update']: Mylinux.execute(ACTION='update', CONFIG=args['config']) elif args['install']: Mylinux.execute(ACTION='install', CONFIG=args['config']) elif args['purge']: Mylinux.execute(ACTION='purge', CONFIG=args['config']) elif args['install']: Mylinux.execute(ACTION='install', CONFIG=args['config'], PACKAGE_NAMES=args['<package>']) elif args['purge']: Mylinux.execute(ACTION='purge', CONFIG=args['config'], PACKAGE_NAMES=args['<package>']) elif args['update']: Mylinux.execute(ACTION='update', CONFIG=args['config'], PACKAGE_NAMES=args['<package>']) if args['create']: Mylinux.create(PACKAGE_NAME=args['<package>'][0]) if args['logs']: Mylinux.logs(PACKAGE_NAME=args['<package>'][0]) if args['save']: Mylinux.script('save') if args['exec']: Mylinux.script(args['<script>']) if args['test']: Mylinux.test() if args['check']: Mylinux.check() sys.exit(0) except AppErr.model as err: print(Fore.RED + Fore.UNDERLINE + 'Model Error:\n'+ Style.RESET_ALL + err.message) sys.exit(err.exitCode) except AppErr.user as err: print(Fore.RED + Fore.UNDERLINE + 'User Error:\n'+ Style.RESET_ALL + err.message) sys.exit(err.exitCode) except AppErr.developer as err: print(Fore.RED + Fore.UNDERLINE + 'Developer Error:\n'+ Style.RESET_ALL) traceback.print_exc() sys.exit(err.exitCode) except Exception: print(Fore.RED + ERR.newErrorDiscoveryMsg + Style.RESET_ALL) traceback.print_exc() print(Fore.RED + ERR.newErrorDiscoveryMsg + Style.RESET_ALL) sys.exit(-1)
if __name__ == '__main__': main()