pmb.parse: add get_parser for returning ArgumentParser obj (MR 2266)

This is needed for sphinx autoprogram since that expects an
argparse.ArgumentParser, and arguments() returns some argparse
"Namespace" obj. Useful for sphinx/autoprogram and maybe other things
later that want to get at pmb's full args.
This commit is contained in:
Clayton Craft 2024-04-30 09:13:39 -07:00 committed by Newbyte
parent a5575a28f9
commit 415e7364f4
No known key found for this signature in database
GPG Key ID: 8A700086A9FE41FD
2 changed files with 8 additions and 3 deletions

View File

@ -1,6 +1,6 @@
# Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later
from pmb.parse.arguments import arguments, arguments_install, arguments_flasher
from pmb.parse.arguments import arguments, arguments_install, arguments_flasher, get_parser
from pmb.parse._apkbuild import apkbuild
from pmb.parse._apkbuild import function_body
from pmb.parse.binfmt_info import binfmt_info

View File

@ -624,7 +624,7 @@ def add_kernel_arg(subparser, name="package", nargs="?", *args, **kwargs):
arg.completer = kernel_completer
def arguments():
def get_parser():
parser = argparse.ArgumentParser(prog="pmbootstrap")
arch_native = pmb.config.arch_native
arch_choices = set(pmb.config.build_device_architectures + [arch_native])
@ -930,8 +930,13 @@ def arguments():
if "argcomplete" in sys.modules:
argcomplete.autocomplete(parser, always_complete_options="long")
return parser
def arguments():
# Parse and extend arguments (also backup unmodified result from argparse)
args = parser.parse_args()
args = get_parser().parse_args()
setattr(args, "from_argparse", copy.deepcopy(args))
setattr(args.from_argparse, "from_argparse", args.from_argparse)