Files
archmgr/cli/args.py
2026-02-02 17:33:54 +01:00

71 lines
2.3 KiB
Python

import argparse
import argcomplete
def add_cli_args():
ap = argparse.ArgumentParser(
"archmgr",
description="A nixos-like declarative config and package manager for Arch Linux (or any other cdistro, with some tweaks)",
usage="archmgr [command] [options]",
)
ap.add_argument("--version", "-v", action="version", version="%(prog)s V0.0.1")
sp = ap.add_subparsers(
title="commands",
metavar="Use 'archmgr [command] --help' to see help for each command",
dest="cmd",
)
# ┌ ┐
# │ Subcommands │
# └ ┘
commit = sp.add_parser(
"commit", help="apply pending changes and commit to git repo"
)
commit.add_argument("--force", "-f", help="force apply", action="store_true")
commit.add_argument(
"--no-apply", "-n", help="do not apply to local system", action="store_true"
)
commit.add_argument(
"--no-commit", "-N", help="do not commit changes to repo", action="store_true"
)
commit.add_argument(
"--no-render", "-r", help="do not re-render renderables", action="store_true"
)
commit.add_argument(
"--dry-run",
"-d",
help="print out files that would be changed",
action="store_true",
)
sp.add_parser("config", help="prints information about your config")
init = sp.add_parser("init", help="initialize a new archmgr repository")
init.add_argument(
"--force",
"-f",
help="resets the git repository and initializes new archmgr repo",
action="store_true",
)
push = sp.add_parser("push", help="push pending changes to git remote")
push.add_argument(
"--force",
"-f",
help="force push (overriding possible remote changes)",
action="store_true",
)
pull = sp.add_parser("pull", help="pull changes from git remote")
pull.add_argument("--rebase", "-r", help="execute rebase", action="store_true")
pull.add_argument(
"--apply",
"-a",
help="also apply the changes to the local system",
action="store_true",
)
argcomplete.autocomplete(ap)
return ap.parse_args(), ap