indy-crypto 0.4.2-dev-63

This is the shared crypto library for Hyperledger Indy components.
Documentation
#!/usr/bin/env python3

import logging
import argparse

from sovrin_repo import SovrinRepo, SignType

if __name__ == '__main__':
    FORMAT = ("{asctime:s} | {levelname:8s} | {filename:20s} "
              "({lineno:d}) | {funcName:s} | {message:s}")

    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument(
        'path',
        help="Path to directory with deb files"
    )
    parser.add_argument(
        'apt-repo',
        help="Apt repo name"
    )
    parser.add_argument(
        'component',
        help="Apt repo component name"
    )

    parser.add_argument(
        '--force-backup',
        help="Force backup debs even if it is already "
             "exist in backup directory",
        action='store_true'
    )
    parser.add_argument(
        '--user',
        help="Remote user",
        default='repo'
    )
    parser.add_argument(
        '--host',
        help="Repo hostname/ip",
        default="repo.sovrin.org"
    )
    parser.add_argument(
        '--ssh-key',
        help="SSH key to access repo",
        default='~/.ssh/id_rsa.repo.sovrin.org'
    )
    parser.add_argument(
        '--distro',
        help="Distributive name",
        default='xenial'
    )
    parser.add_argument(
        '--sign-key',
        help='GPG sign key',
        default='repo@sovrin.org'
    )

    st_default = [SignType.origin.name, SignType.archive.name]
    parser.add_argument(
        '--sign-type',
        help='Type of signatures to use (could be specified multiple times)',
        action='append',
        choices=[st.name for st in list(SignType)],
        default=st_default
    )

    parser.add_argument(
        '--loglevel',
        help='Log level',
        choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'],
        default='INFO'
    )

    args = vars(parser.parse_args())

    logging.basicConfig(format=FORMAT, style='{', level=args['loglevel'])
    logger = logging.getLogger(__name__)
    logger.debug('Args: {}'.format(args))

    # TODO argparse doesn't override default in case of 'append' action
    if args['sign_type'] != st_default:
        sign_types = args['sign_type'][len(st_default):]
    else:
        sign_types = args['sign_type']

    repo = SovrinRepo(
        args['user'], args['host'], args['ssh_key'], args['apt-repo'],
        force_backup=args['force_backup']
    )
    logger.info("Uploading debs from dir {} to repo {} distro {} component {}"
                "".format(args['path'],
                          args['apt-repo'],
                          args['distro'],
                          args['component']))
    repo.add_deb_dir_to_repo(
        args['path'],
        args['component'],
        distro=args['distro'],
        sign_types=[SignType[st] for st in set(sign_types)],
        sign_key=args['sign_key']
    )

    logger.info('Done')