def cli(): """Validate input data and call the appropriate subcommand with necessary arguments""" args = parse_args(sys.argv[1:]) logger.setLevel(args.pop('log') * 10) cmd = args.pop('command') # read in configuration file and destination folder config = json.load(open(args.get('config'))) dest_folder = args.get('dest') # create destination folder if necessary if not op.isdir(dest_folder): makedirs(dest_folder) # validate configuration file v = Validator(schema) valid = v.validate(config) if not valid: raise Exception(v.errors) if cmd == 'download': download_mbtiles(dest_folder=dest_folder, **config) elif cmd == 'labels': make_labels(dest_folder=dest_folder, **config) elif cmd == 'preview': number = args.get('number') preview(dest_folder=dest_folder, number=number, **config) elif cmd == 'images': download_images(dest_folder=dest_folder, **config) elif cmd == 'package': package_directory(dest_folder=dest_folder, **config)
def cli(): """Validate input data and call the appropriate subcommand with necessary arguments""" args = parse_args(sys.argv[1:]) logger.setLevel(args.pop('log') * 10) cmd = args.pop('command') # read in configuration file and destination folder config = json.load(open(args.get('config'))) dest_folder = args.get('dest') # create destination folder if necessary if not op.isdir(dest_folder): makedirs(dest_folder) # validate configuration file v = Validator(schema) valid = v.validate(config) if not valid: raise Exception(v.errors) # custom validation for top level keys # require either: country & bounding_box or geojson if 'geojson' not in config.keys() and not ( 'country' in config.keys() and 'bounding_box' in config.keys()): raise Exception( 'either "geojson" or "country" and "bounding_box" must be present in the configuration JSON' ) # for geojson, overwrite other config keys to correct labeling if 'geojson' in config.keys(): config['country'] = op.splitext(op.basename(config.get('geojson')))[0] config['bounding_box'] = get_bounds( json.load(open(config.get('geojson'), 'r'))) # Convert HTTP auth from list to tuple if it exists if 'http_auth' in config.keys(): config['http_auth'] = tuple(config['http_auth']) if cmd == 'download': download_mbtiles(dest_folder=dest_folder, **config) elif cmd == 'labels': sparse = args.get('sparse', False) make_labels(dest_folder=dest_folder, sparse=sparse, **config) elif cmd == 'preview': number = args.get('number') preview(dest_folder=dest_folder, number=number, **config) elif cmd == 'images': threadcount = args.get('threadcount') download_images(dest_folder=dest_folder, threadcount=threadcount, **config) elif cmd == 'package': package_directory(dest_folder=dest_folder, **config)