import argparse import os, sys from install import install from publish import publish from remove import remove def parse_arguments(): # create our subcommands and args arg_parser = argparse.ArgumentParser(prog="Digpkg", description="The package manager for the Ground programming language.") sub_parsers = arg_parser.add_subparsers(dest="command") # install command install_command = sub_parsers.add_parser(name="install", description="install a mineral") install_command.add_argument("name", help="name of the mineral to install") install_command.add_argument("--max-retries", help="max number of download retries before giving up", default=3, type=int) # uninstall command uninstall_command = sub_parsers.add_parser(name="uninstall", description="uninstall a mineral") uninstall_command.add_argument("name", help="name of the mineral to uninstall") # list command list_command = sub_parsers.add_parser(name="list", description="list all minerals installed in the current environment") list_command.add_argument("--env_name", help="list all minerals from a specific environment.", default=None, required=False) # publish command publish_command = sub_parsers.add_parser(name="publish", description="publish a package to the repository") publish_command.add_argument("name", help="name and version of the package") publish_command.add_argument("folder_path", help="path to the folder that will be uploaded") # remove command remove_command = sub_parsers.add_parser(name="remove", description="remove a published package from the repository") remove_command.add_argument("name", help="name and version of the package") # env command """env_command = sub_parsers.add_parser(name="env", description="manage Ground environments") env_sub_parsers = env_command.add_subparsers(dest="env_command") env_new_command = env_sub_parsers.add_parser(name="new", description="create a new environment") env_new_command.add_argument("name", help="name of the new environment") env_new_command.add_argument("--dont-use", help="by default, the newly created environment will be set as the current environment. if this argument is parsed, then it will be created but not activated.", action="store_true") env_destroy_command = env_sub_parsers.add_parser(name="destroy", description="delete an environment") env_destroy_command.add_argument("name", help="name of the environment to DESTROYYY") env_destroy_command.add_argument("--confirm-yes", action="store_true", help="don't ask for confirmation (DANGEROUS)") env_list_command = env_sub_parsers.add_parser(name="list", description="list all environments")""" args = arg_parser.parse_args() if not args.command: arg_parser.print_help() sys.exit(0) if args.command == "env" and not args.env_command: env_command.print_help() sys.exit(0) if args.command == "install": install(args) elif args.command == "publish": publish(args) elif args.command == "remove": remove(args) def main(): parse_arguments() if __name__ == "__main__": main()