Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 51 additions & 110 deletions repose/argparsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,147 +105,88 @@ def get_parser():

commands = parser.add_subparsers()

# command ADD
def add_subparser(name, help_text, func, arguments=None):
"""Helper to create a subparser and add common arguments."""
if arguments is None:
arguments = []
subparser = commands.add_parser(name, help=help_text)
if "target" in arguments:
subparser.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
)
if "repa" in arguments:
subparser.add_argument(
"repa",
metavar="REPA",
nargs="+",
type=Repa,
help="REPA pattern specification for needed repository",
)
subparser.set_defaults(func=func)
return subparser

cmdadd = commands.add_parser("add", help="add specified repository to target")
cmdadd.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
)
cmdadd.add_argument(
"repa",
metavar="REPA",
nargs="+",
type=Repa,
help="REPA pattern specification for needed repository",
# command ADD
add_subparser(
"add", "add specified repository to target", do_add, ["target", "repa"]
)
cmdadd.set_defaults(func=do_add)

# command REMOVE

cmdremove = commands.add_parser("remove", help="remove repository from target")
cmdremove.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
add_subparser(
"remove", "remove repository from target", do_remove, ["target", "repa"]
)
cmdremove.add_argument("repa", metavar="REPA", type=Repa, nargs="+")
cmdremove.set_defaults(func=do_remove)

# command RESET

cmdreset = commands.add_parser(
add_subparser(
"reset",
help="reset target repositories to only installed products repositories",
)
cmdreset.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
"reset target repositories to only installed products repositories",
do_reset,
["target"],
)
cmdreset.set_defaults(func=do_reset)

# command INSTALL

cmdinstall = commands.add_parser(
"install", help="add specified repository to target and install product"
)
cmdinstall.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
add_subparser(
"install",
"add specified repository to target and install product",
do_install,
["target", "repa"],
)
cmdinstall.add_argument("repa", metavar="REPA", type=Repa, nargs="+")
cmdinstall.set_defaults(func=do_install)

# command CLEAR
add_subparser("clear", "clear all repositories from target", do_clear, ["target"])

cmdclear = commands.add_parser("clear", help="clear all repositories from target")
cmdclear.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
)
cmdclear.set_defaults(func=do_clear)

# command Unistall

cmduninstall = commands.add_parser(
# command Uninstall
add_subparser(
"uninstall",
help="remove specified repository from target and uninstall product",
)
cmduninstall.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
"remove specified repository from target and uninstall product",
do_uninstall,
["target", "repa"],
)
cmduninstall.add_argument("repa", metavar="REPA", type=Repa, nargs="+")
cmduninstall.set_defaults(func=do_uninstall)

# command LIST-Products

cmdlistp = commands.add_parser("list-products", help="list products on target")
cmdlistp.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
cmdlistp = add_subparser(
"list-products", "list products on target", do_list_products, ["target"]
)
glistp = cmdlistp.add_mutually_exclusive_group()
glistp.add_argument(
"--yaml",
action="store_true",
help="Generate YAML host spec for refhosts.yml generator without normalization. Default for SLE 12-SP5 and SLE 15-SP3+ products",
)
cmdlistp.set_defaults(func=do_list_products)

# command LIST-Repos

cmdlistr = commands.add_parser("list-repos", help="list repositories on target")
cmdlistr.add_argument(
"-t",
"--target",
metavar="HOST",
type=ParseHosts,
action="append",
required=True,
help="target to operate on",
add_subparser(
"list-repos", "list repositories on target", do_list_repos, ["target"]
)
cmdlistr.set_defaults(func=do_list_repos)

# command KnownProducts

cmdknown = commands.add_parser(
"known-products", help="list known products by 'repose'"
add_subparser(
"known-products", "list known products by 'repose'", do_known_products
)
cmdknown.set_defaults(func=do_known_products)

return parser