#!/usr/bin/env python3

import argparse
import os
import pathlib
import sys
##
##
_cur_file = pathlib.Path(os.path.abspath(os.path.expanduser(__file__))).resolve()
_cur_path = os.path.dirname(_cur_file)
sys.path.insert(1, _cur_path)
import repomirror


if os.geteuid() == 0:
    _def_logdir = '/var/log/repo'
else:
    _def_logdir = '~/.cache/repologs'


def parseArgs():
    args = argparse.ArgumentParser(description = 'Sync repositories for various distributions to local paths')
    args.add_argument('-c', '--config',
                      default = '~/.config/repomirror.xml',
                      dest = 'cfg',
                      help = ('The path to the config file. If it does not exist, a bare version will be created. '
                              'Default: ~/.config/repomirror.xml'))
    # args.add_argument('-n', '--dry-run',
    #                   action = 'store_true',
    #                   dest = 'dummy',
    #                   help = ('If specified, do not actually sync anything (other than timestamp files if '
    #                           'applicable to determine logic); do not actually sync any repositories. Useful for '
    #                           'generating logs to determine potential issues before they happen'))
    args.add_argument('-d', '--distro',
                      dest = 'distro',
                      action = 'append',
                      help = ('If specified, only sync the specified distro in the config file (otherwise sync all '
                              'specified). May be given multiple times'))
    args.add_argument('-l', '--logdir',
                      default = _def_logdir,
                      dest = 'logdir',
                      help = ('The path to the directory where logs should be written. The actual log files will be '
                              'named after their respective distro names in the config file. '
                              'Default: {0}'.format(_def_logdir)))
    return(args)


def main():
    args = parseArgs().parse_args()
    r = repomirror.Sync(**vars(args))
    r.sync()
    return(None)


if __name__ == '__main__':
    main()