#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
:platform: Unix
:synopsis: Toolbox to prepare ESGF data for publication.
"""
from esgprep.fetchtables.main import run
from utils.constants import *
from utils.help import *
from utils.parser import *
__version__ = 'from esgprep v{} {}'.format(VERSION, VERSION_DATE)
[docs]def get_args():
"""
Returns parsed command-line arguments.
:returns: The argument parser
:rtype: *argparse.Namespace*
"""
main = CustomArgumentParser(
prog='esgfetchtables',
description=PROGRAM_DESC['fetchtables'],
formatter_class=MultilineFormatter,
add_help=False,
epilog=EPILOG)
main._optionals.title = OPTIONAL
main._positionals.title = POSITIONAL
main.add_argument(
'-h', '--help',
action='help',
help=HELP)
main.add_argument(
'-v', '--version',
action='version',
version='%(prog)s ({})'.format(__version__),
help=VERSION_HELP)
main.add_argument(
'--tables-dir',
metavar='$CMOR_TABLES',
type=str,
default=os.environ['CMOR_TABLES'] if 'CMOR_TABLES' in os.environ.keys() else '/usr/local/',
help=TABLES_DIR_HELP)
main.add_argument(
'-l', '--log',
metavar='CWD',
type=str,
const='{}/logs'.format(os.getcwd()),
nargs='?',
help=LOG_HELP)
main.add_argument(
'-d', '--debug',
action='store_true',
default=False,
help=VERBOSE_HELP)
main.add_argument(
'-p', '--project',
metavar='NAME',
type=str,
nargs='+',
help=PROJECT_HELP['fetchtables'])
group = main.add_mutually_exclusive_group(required=False)
group.add_argument(
'-k',
action='store_true',
default=False,
help=KEEP_HELP)
group.add_argument(
'-o',
action='store_true',
default=False,
help=OVERWRITE_HELP)
main.add_argument(
'-b',
metavar='one_version',
choices=['one_version', 'keep_versions'],
type=str,
nargs='?',
const='one_version',
help=BACKUP_HELP)
main.add_argument(
'--no-subfolder',
action='store_true',
default=False,
help=NO_SUBFOLDER_HELP)
main.add_argument(
'--gh-user',
metavar='USERNAME',
type=str,
default=os.environ['GH_USER'] if 'GH_USER' in os.environ.keys() else None,
help=GITHUB_USER_HELP)
main.add_argument(
'--gh-password',
metavar='PASSWORD',
type=str,
default=os.environ['GH_PASSWORD'] if 'GH_PASSWORD' in os.environ.keys() else None,
help=GITHUB_PASSWORD_HELP)
ref = main.add_mutually_exclusive_group(required=False)
ref.add_argument(
'--tag',
metavar='TAG',
type=str,
help=TAG_HELP)
ref.add_argument(
'--tag-regex',
metavar='REGEX',
type=str,
help=TAG_REGEX_HELP)
ref.add_argument(
'--branch',
metavar='BRANCH',
default='master',
type=str,
help=BRANCH_HELP)
ref.add_argument(
'--branch-regex',
metavar='REGEX',
type=str,
help=BRANCH_REGEX_HELP)
main.add_argument(
'--include-file',
metavar="'^.*$'",
type=regex_validator,
action='append',
help=INCLUDE_FILE_HELP['fetchtables'])
main.add_argument(
'--exclude-file',
metavar="'^\..*$'",
type=regex_validator,
action='append',
help=EXCLUDE_FILE_HELP)
group = main.add_mutually_exclusive_group(required=False)
group.add_argument(
'--color',
action='store_true',
help=COLOR_HELP)
group.add_argument(
'--no-color',
action='store_true',
help=NO_COLOR_HELP)
return main.prog, main.parse_args()
[docs]def main():
"""
Run main program
"""
# Get command-line arguments
prog, args = get_args()
setattr(args, 'prog', prog)
# Run program
run(args)
if __name__ == "__main__":
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
main()