Source code for freegenes.client

'''

Copyright (C) 2019 Vanessa Sochat.

This Source Code Form is subject to the terms of the
Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

'''

import argparse
import sys
import os


[docs]def get_parser(): parser = argparse.ArgumentParser(description="FreeGenes Python", formatter_class=argparse.RawTextHelpFormatter, add_help=False) # Global Options parser.add_argument('--debug', '-d', dest="debug", help="use verbose logging to debug.", default=False, action='store_true') parser.add_argument('--quiet', '-q', dest="quiet", help="suppress all normal output", default=False, action='store_true') parser.add_argument('--version', dest="version", help="show version and exit", default=False, action='store_true') subparsers = parser.add_subparsers(help='description', title='actions', dest="command", metavar='general usage') subparsers.add_parser("shell", help="Interact with freegenes python") subparsers.add_parser("twist", help="Interact with twist API") return parser
[docs]def set_verbosity(args): '''determine the message level in the environment to set based on args. ''' level = "INFO" if args.debug: level = "DEBUG" elif args.quiet: level = "QUIET" os.environ['MESSAGELEVEL'] = level os.putenv('MESSAGELEVEL', level) # Import logger to set from freegenes.logger import bot bot.debug('Logging level %s' % level) import freegenes bot.debug("FreeGenes Python Version: %s" % freegenes.__version__)
[docs]def version(): '''version prints the version, both for the user and help output ''' import freegenes return freegenes.__version__
[docs]def main(): parser = get_parser() def print_help(return_code=0): '''print help, including the software version and active client and exit with return code. ''' v = version() print("\nFreeGenes Python [v%s]\n" %(v)) parser.print_help() sys.exit(return_code) if len(sys.argv) == 1: print_help() try: # We capture all primary arguments, and take secondary to pass on args, options = parser.parse_known_args() except: sys.exit(0) # The main function func = None # If the user wants the version if args.version: print(version()) sys.exit(0) # if environment logging variable not set, make silent set_verbosity(args) # Does the user want help for a subcommand? if args.command == 'shell': from .shell import main as func elif args.command == 'twist': from .twist import main as func else: print_help() # Pass on to the correct parser if args.command is not None: func(args=args, options=options, parser=parser)
if __name__ == '__main__': main()