From d1a45cfa9aa222cceb9b8365f8aeedeb4d51df36 Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Thu, 2 Jul 2020 17:06:31 +0300 Subject: [PATCH] Some steps towards fixing #19 --- confutils.nim | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/confutils.nim b/confutils.nim index 83cd2e5..3894b0a 100644 --- a/confutils.nim +++ b/confutils.nim @@ -41,8 +41,8 @@ type OptInfo = ref object name, abbr, desc, typename: string idx: int - hasDefault: bool isHidden: bool + defaultValue: string case kind: OptKind of Discriminator: isCommand: bool @@ -126,6 +126,7 @@ else: const fgSection = fgYellow + fgDefault = fgWhite fgCommand = fgCyan fgOption = fgBlue fgArg = fgBlue @@ -207,6 +208,9 @@ func hasAbbrs(cmd: CmdInfo): bool = if hasAbbrs(subCmd): return true +template hasDefault(opt: OptInfo): bool = + opt.defaultValue.len > 0 + func humaneName(opt: OptInfo): string = if opt.name.len > 0: opt.name else: opt.abbr @@ -315,6 +319,10 @@ proc describeOptions(help: var string, if i == opt.defaultSubCmd: helpOutput " (default)" help.describeOptions subCmd, cmdInvocation, appInfo, conditionalOpts + else: + if opt.hasDefault: + helpOutput spaces(7 + appInfo.namesWidth) + helpOutput fgDefault, "default value: ", fgWhite, styleBright, opt.defaultValue, "\p" let subCmdDiscriminator = cmd.getSubCmdDiscriminator if subCmdDiscriminator != nil: @@ -674,7 +682,8 @@ proc cmdInfoFromType(T: NimNode): CmdInfo = idx: fieldIdx, name: $field.name, isHidden: isHidden, - hasDefault: defaultValue != nil, + defaultValue: if defaultValue == nil: "" + else: repr(defaultValue), typename: field.typ.repr) if desc != nil: opt.desc = desc.strVal