improved handling of defaults

This commit is contained in:
Paul Gauthier 2024-06-06 13:40:16 -07:00
parent 3be2c3e893
commit 65c9a7866a
5 changed files with 118 additions and 89 deletions

View file

@ -483,7 +483,12 @@ def get_sample_yaml():
def main():
print(get_sample_yaml())
arg = sys.argv[1] if len(sys.argv[1:]) else None
if arg == "md":
print(get_help())
else:
print(get_sample_yaml())
if __name__ == "__main__":

View file

@ -30,10 +30,13 @@ class YamlHelpFormatter(argparse.HelpFormatter):
metavar = "VALUE"
default = action.default
if isinstance(default, list) and not default:
if default == argparse.SUPPRESS:
default = ""
elif action.default not in (argparse.SUPPRESS, None):
default = action.default
elif isinstance(default, str):
pass
elif isinstance(default, list) and not default:
default = ""
elif action.default is not None:
default = "true" if default else "false"
else:
default = ""
@ -41,7 +44,24 @@ class YamlHelpFormatter(argparse.HelpFormatter):
if action.help:
parts.append(f"## {action.help}")
parts.append(f"#{action.dest}: {default}\n")
switch = action.dest
if isinstance(action, argparse._StoreTrueAction):
default = False
elif isinstance(action, argparse._StoreConstAction):
default = action.const
if default is False:
default = "false"
if default is True:
default = "true"
if default is not None:
parts.append(f"#{switch}: {default}\n")
else:
parts.append(f"#{switch}:\n")
###
# parts.append(str(action))
return "\n".join(parts) + "\n"
@ -65,16 +85,23 @@ class MarkdownHelpFormatter(argparse.HelpFormatter):
return ""
def _format_action(self, action):
if not action.option_strings:
return ""
parts = [""]
metavar = action.metavar
if not metavar and isinstance(action, argparse._StoreAction):
metavar = "VALUE"
for switch in action.option_strings:
if switch.startswith("--"):
break
if metavar:
parts.append(f"### `--{action.dest} {metavar}`")
parts.append(f"### `{switch} {metavar}`")
else:
parts.append(f"### `--{action.dest}`")
parts.append(f"### `{switch}`")
if action.help:
parts.append(action.help + " ")