Source code for cityiq.cli.config

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""

"""

import argparse
import logging
import sys
from pathlib import Path

from cityiq import __version__

__author__ = "Eric Busboom"
__copyright__ = "Eric Busboom"
__license__ = "mit"

_logger = logging.getLogger(__name__)


[docs]def make_parser(): """Create or print the ``cityiq`` module configuration. You can create a new configuration file with the ``-w`` option or print the configuration with ``-p`` """ parser = argparse.ArgumentParser(description=make_parser.__doc__) parser.add_argument('--version', action='version', version='cityiq {ver}'.format(ver=__version__)) group = parser.add_mutually_exclusive_group() group.add_argument('-w', '--write', help="Write a new default config file to the current directory, " "or with -u to the user's directory ", action='store_true') parser.add_argument('-u', '--user', help="With --write, write to the user's home directory, ~/.cityiq.yaml", action='store_true') parser.add_argument('-F', '--force', help="With --write, force overwritting", action='store_true') group.add_argument('-p', '--print', help='Print the config file', action='store_true') return parser
parser = make_parser()
[docs]def main(args): """Main entry point allowing external calls Args: args ([str]): command line parameter list """ from cityiq import Config args = parser.parse_args(args) config = Config() if args.write: p = Path(__file__).parent.joinpath('default-config.yaml') with p.open() as f: d = f.read() if args.user: fn = Path('~/.city-iq.yaml').expanduser() else: fn = Path('./city-iq.yaml').resolve() if fn.exists(): if args.force: fn.unlink() else: print("Error: {} exists, not overwritting".format(fn)) sys.exit(1) with open(fn, 'w') as f: f.write(d) print("Wrote ", fn) elif args.print: import yaml if not config.client_id: print("ERROR: Did not get valid config file. Use --config option or CITYIQ_CONFIG env var") else: print("Using config:", config._config_file) print(yaml.dump(config.dict, default_flow_style=False)) else: parser.print_usage()
[docs]def run(): """Entry point for console_scripts """ main(sys.argv[1:])
if __name__ == "__main__": run()