in Sources/ArgumentParser/Parsable Types/ParsableArguments.swift [248:287]
init(_ type: ParsableArguments.Type, creatingHelp: Bool = false) {
#if DEBUG
do {
try type._validate()
} catch {
assertionFailure("\(error)")
}
#endif
let a: [ArgumentSet] = Mirror(reflecting: type.init())
.children
.compactMap { child in
guard var codingKey = child.label else { return nil }
if let parsed = child.value as? ArgumentSetProvider {
if creatingHelp {
guard !parsed._hiddenFromHelp else { return nil }
}
// Property wrappers have underscore-prefixed names
codingKey = String(codingKey.first == "_"
? codingKey.dropFirst(1)
: codingKey.dropFirst(0))
let key = InputKey(rawValue: codingKey)
return parsed.argumentSet(for: key)
} else {
// Save a non-wrapped property as is
var definition = ArgumentDefinition(
key: InputKey(rawValue: codingKey),
kind: .default,
parser: { _ in nil },
default: nilOrValue(child.value),
completion: .default)
definition.help.updateArgumentHelp(help: .hidden)
return ArgumentSet(definition)
}
}
self.init(sets: a)
}