Source code for pymake.cmds.createjson

#!/usr/bin/env python3
"""Create pymake code.json file.

This script originates from pymake: https://github.com/modflowpy/pymake
It requires Python 3.6 or later, and has no dependencies.
"""

import sys
from pathlib import Path

from pymake import usgs_program_data
from pymake.pymake_parser import _parser_setup

__all__ = ["main"]
__license__ = "CC0"


[docs] def main() -> None: """Command line interface Returns ------- None """ import argparse # Show meaningful examples at bottom of help prog = Path(sys.argv[0]).stem examples = f"""\ Examples: Create code.json in the current directory: $ {prog} Create code.json in the ./temp subdirectory: $ {prog} -f temp/code.json """ parser_obj = argparse.ArgumentParser( description=__doc__.split("\n")[0], formatter_class=argparse.RawDescriptionHelpFormatter, epilog=examples, ) # command line arguments specific to make-program parser_dict = { "fpth": { "tag": ( "-f", "--fpth", ), "help": 'Path for the json file to be created. Default is "code.json".', "default": "code.json", "choices": None, "action": None, }, "appdir": { "tag": ("-ad", "--appdir"), "help": "code.json path that overides FPTH defined path. Default is None.", "default": None, "choices": None, "action": None, }, "prog_data": { "tag": ("--prog_data",), "help": "User-specified program database. If prog_data is None, " "it will be created from the USGS program database. Default is None.", "default": None, "choices": None, "action": None, }, "current": { "tag": ("--current",), "help": "If False, all USGS program targets are listed. " "If True, only USGS program targets that are defined as current " "are listed. Default is True.", "default": True, "choices": None, "action": "store_true", }, "update": { "tag": ( "-u", "--update", ), "help": "If True, existing targets in the user-specified program database " "with values in the USGS program database. If False, existing targets " "in the user-specified program database will not be updated. " "Default is True.", "default": True, "choices": None, "action": "store_true", }, "write_markdown": { "tag": ("--write_markdown",), "help": "If True, write markdown file that includes the target name, " "version, and the last-modified date of the download asset (url). " "Default is True.", "default": True, "choices": None, "action": "store_true", }, "partial_json": { "tag": ("--partial_json",), "help": "Create a partial code.json based on targets in the " "parent path for the code.json file (FPTH). Default is False.", "default": False, "choices": None, "action": "store_true", }, "zip": { "tag": ("--zip",), "help": "Zip code.json into ZIP. (default is None)", "default": None, "choices": None, "action": None, "type": (str, Path), }, "verbose": { "tag": ( "-v", "--verbose", ), "help": "Verbose output to terminal. Default is False.", "default": False, "choices": None, "action": "store_true", }, } # setup parser for make-code-json for _, value in parser_dict.items(): my_parser = _parser_setup(parser_obj, value) parser_args = my_parser.parse_args() # define args args = vars(parser_args) # clean up zip argument in args args["zip_path"] = args["zip"] del args["zip"] # run build_apps try: usgs_program_data.export_json(**args) except (EOFError, KeyboardInterrupt): sys.exit(f" cancelling '{sys.argv[0]}'")
if __name__ == "__main__": main()