lrossett / centos / centpkg

Forked from centos/centpkg 3 years ago
Clone
b37d1c
import os
b37d1c
import sys
b37d1c
import argparse
b37d1c
import logging
b37d1c
import configparser
b37d1c
b37d1c
import pyrpkg.utils
b37d1c
# import pyrpkg.cli
b37d1c
b37d1c
import centpkg.api.cli
b37d1c
b37d1c
b37d1c
def get_log(client):
b37d1c
    """
b37d1c
    Returns a logging level based on client params.
b37d1c
    :param client: pyrpkg.cli.cliClient
b37d1c
    :return: str
b37d1c
    """
b37d1c
    if client.args.v:
b37d1c
        return logging.DEBUG
b37d1c
    if client.args.q:
b37d1c
        return logging.WARNING
b37d1c
    return logging.INFO
b37d1c
b37d1c
b37d1c
def run(*args, **kwargs):
b37d1c
    """
b37d1c
    Runs centpkg command based on args and kwargs.
b37d1c
    It will use sys.argv as cli arguments if no args or kwargs are provided.
b37d1c
b37d1c
    :param args: list
b37d1c
    :param kwargs: dict
b37d1c
    :return: None
b37d1c
    """
b37d1c
    cli_name = 'centpkg'
b37d1c
    parser = argparse.ArgumentParser(add_help=False)
b37d1c
    parser.add_argument(
b37d1c
        '-C', '--config', help='Specify a config file to use',
b37d1c
        default='/etc/rpkg/rpkg.conf')
b37d1c
    (args, other) = parser.parse_known_args()
b37d1c
b37d1c
    if not os.path.exists(args.config) and not other[-1] in ['--help', '-h']:
b37d1c
        sys.stderr.write(f'Invalid config file {cli_name} {args.config}\n')
b37d1c
        sys.exit(1)
b37d1c
b37d1c
    config = configparser.SafeConfigParser()
b37d1c
    config.read(args.config)
b37d1c
b37d1c
    client = centpkg.api.cli.CentPkgCli(config)
b37d1c
    client.do_imports()
b37d1c
    client.parse_cmdline()
b37d1c
b37d1c
    if not client.args.path:
b37d1c
        try:
b37d1c
            client.args.path = pyrpkg.utils.getcwd()
b37d1c
        except Exception:
b37d1c
            print('Could not get current path, have you deleted it?')
b37d1c
            sys.exit(1)
b37d1c
b37d1c
    log = pyrpkg.log
b37d1c
    client.setupLogging(log)
b37d1c
    log.setLevel(get_log(client))
b37d1c
b37d1c
    try:
b37d1c
        sys.exit(client.args.command())
b37d1c
    except KeyboardInterrupt:
b37d1c
        pass