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-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 " )
install_command . add_argument ( " name " , help = " name of the mineral to install " )
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 " )
list_command . add_argument ( " --env_name " , help = " list all minerals from a specific environment. " , default = None , required = False )
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
2026-01-18 19:59:58 +11:00
""" env_command = sub_parsers.add_parser(name= " env " , description= " manage Ground environments " )
2026-01-18 14:26:45 +11:00
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) " )
2026-01-18 19:59:58 +11:00
env_list_command = env_sub_parsers . add_parser ( name = " list " , description = " list all environments " ) """
2026-01-18 14:26:45 +11:00
args = arg_parser . parse_args ( )
if not args . command :
arg_parser . print_help ( )
2026-01-18 19:59:58 +11:00
sys . exit ( 0 )
2026-01-18 14:26:45 +11:00
if args . command == " env " and not args . env_command :
env_command . 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-18 14:26:45 +11:00
def main ( ) :
parse_arguments ( )
if __name__ == " __main__ " :
main ( )