2026-01-18 14:26:45 +11:00
|
|
|
import argparse
|
2026-01-18 19:59:58 +11:00
|
|
|
import os, sys
|
|
|
|
|
|
|
|
|
|
from install import install
|
2026-01-18 21:26:23 +11:00
|
|
|
from publish import publish
|
|
|
|
|
from remove import remove
|
2026-01-19 06:46:33 +11:00
|
|
|
from list import list_cmd
|
2026-01-19 07:03:51 +11:00
|
|
|
from uninstall import uninstall
|
2026-01-18 14:26:45 +11:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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")
|
2026-01-19 07:29:55 +11:00
|
|
|
install_command.add_argument("names", help="name of the minerals to install", nargs="+")
|
2026-01-18 19:59:58 +11:00
|
|
|
install_command.add_argument("--max-retries", help="max number of download retries before giving up", default=3, type=int)
|
2026-01-18 14:26:45 +11:00
|
|
|
|
|
|
|
|
# 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")
|
|
|
|
|
|
2026-01-18 21:26:23 +11:00
|
|
|
# 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")
|
|
|
|
|
|
2026-01-18 14:26:45 +11:00
|
|
|
# env command
|
|
|
|
|
|
|
|
|
|
args = arg_parser.parse_args()
|
|
|
|
|
|
|
|
|
|
if not args.command:
|
|
|
|
|
arg_parser.print_help()
|
2026-01-18 19:59:58 +11:00
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
|
if args.command == "install":
|
|
|
|
|
install(args)
|
2026-01-18 21:26:23 +11:00
|
|
|
elif args.command == "publish":
|
|
|
|
|
publish(args)
|
|
|
|
|
elif args.command == "remove":
|
|
|
|
|
remove(args)
|
2026-01-19 06:46:33 +11:00
|
|
|
elif args.command == "list":
|
|
|
|
|
list_cmd(args)
|
2026-01-19 07:03:51 +11:00
|
|
|
elif args.command == "uninstall":
|
|
|
|
|
uninstall(args)
|
2026-01-18 14:26:45 +11:00
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
parse_arguments()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|