|
|
|
@ -67,105 +67,46 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
|
|
parser.add_argument("--unsafe", help="allow to run ahriman as non-ahriman user", action="store_true")
|
|
|
|
|
parser.add_argument("-v", "--version", action="version", version=version.__version__)
|
|
|
|
|
|
|
|
|
|
subparsers = parser.add_subparsers(title="command", help="command to run", dest="command")
|
|
|
|
|
subparsers = parser.add_subparsers(title="command", help="command to run", dest="command", required=True)
|
|
|
|
|
|
|
|
|
|
_set_add_parser(subparsers)
|
|
|
|
|
_set_check_parser(subparsers)
|
|
|
|
|
_set_clean_parser(subparsers)
|
|
|
|
|
_set_config_parser(subparsers)
|
|
|
|
|
_set_init_parser(subparsers)
|
|
|
|
|
_set_aur_search_parser(subparsers)
|
|
|
|
|
_set_key_import_parser(subparsers)
|
|
|
|
|
_set_package_add_parser(subparsers)
|
|
|
|
|
_set_package_remove_parser(subparsers)
|
|
|
|
|
_set_package_status_parser(subparsers)
|
|
|
|
|
_set_package_status_remove_parser(subparsers)
|
|
|
|
|
_set_package_status_update_parser(subparsers)
|
|
|
|
|
_set_patch_add_parser(subparsers)
|
|
|
|
|
_set_patch_list_parser(subparsers)
|
|
|
|
|
_set_patch_remove_parser(subparsers)
|
|
|
|
|
_set_rebuild_parser(subparsers)
|
|
|
|
|
_set_remove_parser(subparsers)
|
|
|
|
|
_set_remove_unknown_parser(subparsers)
|
|
|
|
|
_set_report_parser(subparsers)
|
|
|
|
|
_set_search_parser(subparsers)
|
|
|
|
|
_set_setup_parser(subparsers)
|
|
|
|
|
_set_sign_parser(subparsers)
|
|
|
|
|
_set_status_parser(subparsers)
|
|
|
|
|
_set_status_update_parser(subparsers)
|
|
|
|
|
_set_sync_parser(subparsers)
|
|
|
|
|
_set_update_parser(subparsers)
|
|
|
|
|
_set_user_parser(subparsers)
|
|
|
|
|
_set_repo_check_parser(subparsers)
|
|
|
|
|
_set_repo_clean_parser(subparsers)
|
|
|
|
|
_set_repo_config_parser(subparsers)
|
|
|
|
|
_set_repo_init_parser(subparsers)
|
|
|
|
|
_set_repo_rebuild_parser(subparsers)
|
|
|
|
|
_set_repo_remove_unknown_parser(subparsers)
|
|
|
|
|
_set_repo_report_parser(subparsers)
|
|
|
|
|
_set_repo_setup_parser(subparsers)
|
|
|
|
|
_set_repo_sign_parser(subparsers)
|
|
|
|
|
_set_repo_sync_parser(subparsers)
|
|
|
|
|
_set_repo_update_parser(subparsers)
|
|
|
|
|
_set_user_add_parser(subparsers)
|
|
|
|
|
_set_user_remove_parser(subparsers)
|
|
|
|
|
_set_web_parser(subparsers)
|
|
|
|
|
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_add_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_aur_search_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for add subcommand
|
|
|
|
|
add parser for AUR search subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("add", help="add package", description="add package", formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="package base/name or archive path", nargs="+")
|
|
|
|
|
parser.add_argument("--now", help="run update function after", action="store_true")
|
|
|
|
|
parser.add_argument("--source", help="package source", choices=PackageSource, type=PackageSource,
|
|
|
|
|
default=PackageSource.Auto)
|
|
|
|
|
parser.add_argument("--without-dependencies", help="do not add dependencies", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Add)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_check_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for check subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("check", help="check for updates",
|
|
|
|
|
description="check for updates. Same as update --dry-run --no-manual",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="filter check by package base", nargs="*")
|
|
|
|
|
parser.add_argument("--no-vcs", help="do not check VCS packages", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Update, no_aur=False, no_manual=True, dry_run=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_clean_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for clean subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("clean", help="clean local caches", description="clear local caches",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--no-build", help="do not clear directory with package sources", action="store_true")
|
|
|
|
|
parser.add_argument("--no-cache", help="do not clear directory with package caches", action="store_true")
|
|
|
|
|
parser.add_argument("--no-chroot", help="do not clear build chroot", action="store_true")
|
|
|
|
|
parser.add_argument("--no-manual", help="do not clear directory with manually added packages", action="store_true")
|
|
|
|
|
parser.add_argument("--no-packages", help="do not clear directory with built packages", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Clean, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_config_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for config subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("config", help="dump configuration",
|
|
|
|
|
description="dump configuration for specified architecture",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.set_defaults(handler=handlers.Dump, lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_init_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for init subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("init", help="create repository tree",
|
|
|
|
|
description="create empty repository tree. Optional command for auto architecture support",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.set_defaults(handler=handlers.Init, no_report=True)
|
|
|
|
|
parser = root.add_parser("aur-search", aliases=["search"], help="search for package",
|
|
|
|
|
description="search for package in AUR using API", formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("search", help="search terms, can be specified multiple times", nargs="+")
|
|
|
|
|
parser.set_defaults(handler=handlers.Search, architecture=[""], lock=None, no_report=True, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -177,6 +118,10 @@ def _set_key_import_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("key-import", help="import PGP key",
|
|
|
|
|
description="import PGP key from public sources to repository user",
|
|
|
|
|
epilog="By default ahriman runs build process with package sources validation "
|
|
|
|
|
"(in case if signature and keys are available in PKGBUILD). This process will "
|
|
|
|
|
"fail in case if key is not known for build user. This subcommand can be used "
|
|
|
|
|
"in order to import the PGP key to user keychain.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--key-server", help="key server for key import", default="pgp.mit.edu")
|
|
|
|
|
parser.add_argument("key", help="PGP key to import from public server")
|
|
|
|
@ -184,6 +129,91 @@ def _set_key_import_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_package_add_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for package addition subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("package-add", aliases=["add"], help="add package", description="add package",
|
|
|
|
|
epilog="This subcommand should be used for new package addition. It also supports flag "
|
|
|
|
|
"--now in case if you would like to build the package immediately.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="package base/name or archive path", nargs="+")
|
|
|
|
|
parser.add_argument("-n", "--now", help="run update function after", action="store_true")
|
|
|
|
|
parser.add_argument("-s", "--source", help="package source",
|
|
|
|
|
type=PackageSource, choices=PackageSource, default=PackageSource.Auto)
|
|
|
|
|
parser.add_argument("--without-dependencies", help="do not add dependencies", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Add)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_package_remove_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for package removal subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("package-remove", aliases=["remove"], help="remove package", description="remove package",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="package name or base", nargs="+")
|
|
|
|
|
parser.set_defaults(handler=handlers.Remove)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_package_status_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for package status subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("package-status", aliases=["status"], help="get package status",
|
|
|
|
|
description="request status of the package",
|
|
|
|
|
epilog="This feature requests package status from the web interface if it is available.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="filter status by package base", nargs="*")
|
|
|
|
|
parser.add_argument("--ahriman", help="get service status itself", action="store_true")
|
|
|
|
|
parser.add_argument("-s", "--status", help="filter packages by status",
|
|
|
|
|
type=BuildStatusEnum, choices=BuildStatusEnum)
|
|
|
|
|
parser.set_defaults(handler=handlers.Status, lock=None, no_report=True, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_package_status_remove_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for package status remove subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("package-status-remove", help="remove package status",
|
|
|
|
|
description="remove the package from the status page",
|
|
|
|
|
epilog="Please note that this subcommand does not remove the package itself, it just "
|
|
|
|
|
"clears the status page.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="remove specified packages", nargs="+")
|
|
|
|
|
parser.set_defaults(handler=handlers.StatusUpdate, action=Action.Remove, lock=None, no_report=True, quiet=True,
|
|
|
|
|
unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_package_status_update_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for package status update subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("package-status-update", aliases=["status-update"], help="update package status",
|
|
|
|
|
description="update package status on the status page", formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="set status for specified packages. "
|
|
|
|
|
"If no packages supplied, service status will be updated",
|
|
|
|
|
nargs="*")
|
|
|
|
|
parser.add_argument("-s", "--status", help="new status",
|
|
|
|
|
type=BuildStatusEnum, choices=BuildStatusEnum, default=BuildStatusEnum.Success)
|
|
|
|
|
parser.set_defaults(handler=handlers.StatusUpdate, action=Action.Update, lock=None, no_report=True, quiet=True,
|
|
|
|
|
unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_patch_add_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for new patch subcommand
|
|
|
|
@ -230,38 +260,88 @@ def _set_patch_remove_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_rebuild_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_check_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for rebuild subcommand
|
|
|
|
|
add parser for repository check subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("rebuild", help="rebuild repository", description="rebuild whole repository",
|
|
|
|
|
parser = root.add_parser("repo-check", aliases=["check"], help="check for updates",
|
|
|
|
|
description="check for updates. Same as update --dry-run --no-manual",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="filter check by package base", nargs="*")
|
|
|
|
|
parser.add_argument("--no-vcs", help="do not check VCS packages", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Update, dry_run=True, no_aur=False, no_manual=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_repo_clean_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for repository clean subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("repo-clean", aliases=["clean"], help="clean local caches",
|
|
|
|
|
description="clear local caches",
|
|
|
|
|
epilog="The subcommand clears every temporary directories (builds, caches etc). Normally "
|
|
|
|
|
"you should not run this command manually. Also in case if you are going to clear "
|
|
|
|
|
"the chroot directories you will need root privileges.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--no-build", help="do not clear directory with package sources", action="store_true")
|
|
|
|
|
parser.add_argument("--no-cache", help="do not clear directory with package caches", action="store_true")
|
|
|
|
|
parser.add_argument("--no-chroot", help="do not clear build chroot", action="store_true")
|
|
|
|
|
parser.add_argument("--no-manual", help="do not clear directory with manually added packages", action="store_true")
|
|
|
|
|
parser.add_argument("--no-packages", help="do not clear directory with built packages", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.Clean, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_repo_config_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for config subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("repo-config", aliases=["config"], help="dump configuration",
|
|
|
|
|
description="dump configuration for specified architecture",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.set_defaults(handler=handlers.Dump, lock=None, no_report=True, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_repo_init_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for repository init subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("repo-init", aliases=["init"], help="create repository tree",
|
|
|
|
|
description="create empty repository tree. Optional command for auto architecture support",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.set_defaults(handler=handlers.Init, no_report=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_repo_rebuild_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for repository rebuild subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("repo-rebuild", aliases=["rebuild"], help="rebuild repository",
|
|
|
|
|
description="rebuild whole repository", formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--depends-on", help="only rebuild packages that depend on specified package", action="append")
|
|
|
|
|
parser.set_defaults(handler=handlers.Rebuild)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_remove_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for remove subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("remove", help="remove package", description="remove package", formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="package name or base", nargs="+")
|
|
|
|
|
parser.set_defaults(handler=handlers.Remove)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_remove_unknown_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_remove_unknown_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for remove unknown packages subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("remove-unknown", help="remove unknown packages",
|
|
|
|
|
parser = root.add_parser("repo-remove-unknown", aliases=["remove-unknown"], help="remove unknown packages",
|
|
|
|
|
description="remove packages which are missing in AUR",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--dry-run", help="just perform check for packages without removal", action="store_true")
|
|
|
|
@ -269,39 +349,29 @@ def _set_remove_unknown_parser(root: SubParserAction) -> argparse.ArgumentParser
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_report_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_report_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for report subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("report", help="generate report", description="generate report",
|
|
|
|
|
parser = root.add_parser("repo-report", aliases=["report"], help="generate report", description="generate report",
|
|
|
|
|
epilog="Create and/or update repository report as configured.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("target", help="target to generate report", nargs="*")
|
|
|
|
|
parser.set_defaults(handler=handlers.Report)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_search_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for search subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("search", help="search for package", description="search for package in AUR using API")
|
|
|
|
|
parser.add_argument("search", help="search terms, can be specified multiple times", nargs="+")
|
|
|
|
|
parser.set_defaults(handler=handlers.Search, architecture=[""], lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_setup_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_setup_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for setup subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("setup", help="initial service configuration",
|
|
|
|
|
parser = root.add_parser("repo-setup", aliases=["setup"], help="initial service configuration",
|
|
|
|
|
description="create initial service configuration, requires root",
|
|
|
|
|
epilog="Create _minimal_ configuration for the service according to provided options.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--build-command", help="build command prefix", default="ahriman")
|
|
|
|
|
parser.add_argument("--from-configuration", help="path to default devtools pacman configuration",
|
|
|
|
@ -310,80 +380,51 @@ def _set_setup_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
parser.add_argument("--packager", help="packager name and email", required=True)
|
|
|
|
|
parser.add_argument("--repository", help="repository name", required=True)
|
|
|
|
|
parser.add_argument("--sign-key", help="sign key id")
|
|
|
|
|
parser.add_argument("--sign-target", help="sign options", type=SignSettings.from_option,
|
|
|
|
|
choices=SignSettings, action="append")
|
|
|
|
|
parser.add_argument("--sign-target", help="sign options", action="append",
|
|
|
|
|
type=SignSettings.from_option, choices=SignSettings)
|
|
|
|
|
parser.add_argument("--web-port", help="port of the web service", type=int)
|
|
|
|
|
parser.set_defaults(handler=handlers.Setup, lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
parser.set_defaults(handler=handlers.Setup, lock=None, no_report=True, quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_sign_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_sign_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for sign subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("sign", help="sign packages", description="(re-)sign packages and repository database",
|
|
|
|
|
parser = root.add_parser("repo-sign", aliases=["sign"], help="sign packages",
|
|
|
|
|
description="(re-)sign packages and repository database",
|
|
|
|
|
epilog="Sign repository and/or packages as configured.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="sign only specified packages", nargs="*")
|
|
|
|
|
parser.set_defaults(handler=handlers.Sign)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_status_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_sync_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for status subcommand
|
|
|
|
|
add parser for repository sync subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("status", help="get package status", description="request status of the package",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("--ahriman", help="get service status itself", action="store_true")
|
|
|
|
|
parser.add_argument("--status", help="filter packages by status", choices=BuildStatusEnum, type=BuildStatusEnum)
|
|
|
|
|
parser.add_argument("package", help="filter status by package base", nargs="*")
|
|
|
|
|
parser.set_defaults(handler=handlers.Status, lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_status_update_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for status update subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("status-update", help="update package status", description="request status of the package",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"package",
|
|
|
|
|
help="set status for specified packages. If no packages supplied, service status will be updated",
|
|
|
|
|
nargs="*")
|
|
|
|
|
parser.add_argument("--status", help="new status", choices=BuildStatusEnum,
|
|
|
|
|
type=BuildStatusEnum, default=BuildStatusEnum.Success)
|
|
|
|
|
parser.add_argument("--remove", help="remove package status page", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.StatusUpdate, lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_sync_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for sync subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("sync", help="sync repository", description="sync packages to remote server",
|
|
|
|
|
parser = root.add_parser("repo-sync", aliases=["sync"], help="sync repository",
|
|
|
|
|
description="sync packages to remote server",
|
|
|
|
|
epilog="Synchronize the repository to remote services as configured.",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("target", help="target to sync", nargs="*")
|
|
|
|
|
parser.set_defaults(handler=handlers.Sync)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_update_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_repo_update_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for update subcommand
|
|
|
|
|
add parser for repository update subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("update", help="update packages", description="run updates", formatter_class=_formatter)
|
|
|
|
|
parser = root.add_parser("repo-update", aliases=["update"], help="update packages", description="run updates",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("package", help="filter check by package base", nargs="*")
|
|
|
|
|
parser.add_argument("--dry-run", help="just perform check for updates, same as check command", action="store_true")
|
|
|
|
|
parser.add_argument("--no-aur", help="do not check for AUR updates. Implies --no-vcs", action="store_true")
|
|
|
|
@ -393,31 +434,43 @@ def _set_update_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_user_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
def _set_user_add_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for create user subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser(
|
|
|
|
|
"user",
|
|
|
|
|
help="manage users for web services",
|
|
|
|
|
description="manage users for web services with password and role. In case if password was not entered it will be asked interactively",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser = root.add_parser("user-add", help="create or update user for web services",
|
|
|
|
|
description="update user for web services with the given password and role. "
|
|
|
|
|
"In case if password was not entered it will be asked interactively",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("username", help="username for web service")
|
|
|
|
|
parser.add_argument("--as-service", help="add user as service user", action="store_true")
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"-a",
|
|
|
|
|
"--access",
|
|
|
|
|
help="user access level",
|
|
|
|
|
type=UserAccess,
|
|
|
|
|
choices=UserAccess,
|
|
|
|
|
default=UserAccess.Read)
|
|
|
|
|
parser.add_argument("--no-reload", help="do not reload authentication module", action="store_true")
|
|
|
|
|
parser.add_argument("-p", "--password", help="user password")
|
|
|
|
|
parser.add_argument("-r", "--remove", help="remove user from configuration", action="store_true")
|
|
|
|
|
parser.add_argument("--secure", help="set file permissions to user-only", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.User, architecture=[""], lock=None, quiet=True, no_report=True, unsafe=True)
|
|
|
|
|
parser.add_argument("-p", "--password", help="user password. Blank password will be treated as empty password, "
|
|
|
|
|
"which is in particular must be used for OAuth2 authorization type.")
|
|
|
|
|
parser.add_argument("-r", "--role", help="user access level",
|
|
|
|
|
type=UserAccess, choices=UserAccess, default=UserAccess.Read)
|
|
|
|
|
parser.add_argument("-s", "--secure", help="set file permissions to user-only", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.User, action=Action.Update, architecture=[""], lock=None, no_report=True,
|
|
|
|
|
quiet=True, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _set_user_remove_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
"""
|
|
|
|
|
add parser for user removal subcommand
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("user-remove", help="remove user for web services",
|
|
|
|
|
description="remove user from the user mapping and write the configuration",
|
|
|
|
|
formatter_class=_formatter)
|
|
|
|
|
parser.add_argument("username", help="username for web service")
|
|
|
|
|
parser.add_argument("--no-reload", help="do not reload authentication module", action="store_true")
|
|
|
|
|
parser.add_argument("-s", "--secure", help="set file permissions to user-only", action="store_true")
|
|
|
|
|
parser.set_defaults(handler=handlers.User, action=Action.Remove, architecture=[""], lock=None, no_report=True, # nosec
|
|
|
|
|
password="", quiet=True, role=UserAccess.Read, unsafe=True)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -427,7 +480,7 @@ def _set_web_parser(root: SubParserAction) -> argparse.ArgumentParser:
|
|
|
|
|
:param root: subparsers for the commands
|
|
|
|
|
:return: created argument parser
|
|
|
|
|
"""
|
|
|
|
|
parser = root.add_parser("web", help="start web server", description="start web server", formatter_class=_formatter)
|
|
|
|
|
parser = root.add_parser("web", help="web server", description="start web server", formatter_class=_formatter)
|
|
|
|
|
parser.set_defaults(handler=handlers.Web, lock=None, no_report=True, parser=_parser)
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|