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))
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')