Show default values for optional parameters (#122)

This commit is contained in:
AliReZa Sabouri
2022-01-11 16:52:13 +03:30
committed by GitHub
parent 5e684c8b36
commit c08102f85f

View File

@@ -206,6 +206,12 @@ internal class HelpConsoleFormatter : ConsoleFormatter
Write('.'); Write('.');
Write(' '); Write(' ');
} }
// Default value
if (!parameterSchema.IsRequired)
{
WriteDefaultValue(parameterSchema);
}
WriteLine(); WriteLine();
} }
@@ -298,60 +304,65 @@ internal class HelpConsoleFormatter : ConsoleFormatter
// Default value // Default value
if (!optionSchema.IsRequired) if (!optionSchema.IsRequired)
{ {
var defaultValue = _context.CommandDefaultValues.GetValueOrDefault(optionSchema); WriteDefaultValue(optionSchema);
if (defaultValue is not null)
{
// Non-Scalar
if (defaultValue is not string && defaultValue is IEnumerable defaultValues)
{
var elementType =
defaultValues.GetType().TryGetEnumerableUnderlyingType() ??
typeof(object);
if (elementType.IsToStringOverriden())
{
Write(ConsoleColor.White, "Default: ");
var isFirst = true;
foreach (var element in defaultValues)
{
if (isFirst)
{
isFirst = false;
}
else
{
Write(", ");
}
Write('"');
Write(element.ToString(CultureInfo.InvariantCulture));
Write('"');
}
Write('.');
}
}
else
{
if (defaultValue.GetType().IsToStringOverriden())
{
Write(ConsoleColor.White, "Default: ");
Write('"');
Write(defaultValue.ToString(CultureInfo.InvariantCulture));
Write('"');
Write('.');
}
}
}
} }
WriteLine(); WriteLine();
} }
} }
private void WriteDefaultValue(IMemberSchema schema)
{
var defaultValue = _context.CommandDefaultValues.GetValueOrDefault(schema);
if (defaultValue is not null)
{
// Non-Scalar
if (defaultValue is not string && defaultValue is IEnumerable defaultValues)
{
var elementType =
defaultValues.GetType().TryGetEnumerableUnderlyingType() ??
typeof(object);
if (elementType.IsToStringOverriden())
{
Write(ConsoleColor.White, "Default: ");
var isFirst = true;
foreach (var element in defaultValues)
{
if (isFirst)
{
isFirst = false;
}
else
{
Write(", ");
}
Write('"');
Write(element.ToString(CultureInfo.InvariantCulture));
Write('"');
}
Write('.');
}
}
else
{
if (defaultValue.GetType().IsToStringOverriden())
{
Write(ConsoleColor.White, "Default: ");
Write('"');
Write(defaultValue.ToString(CultureInfo.InvariantCulture));
Write('"');
Write('.');
}
}
}
}
private void WriteCommandChildren() private void WriteCommandChildren()
{ {
var childCommandSchemas = _context var childCommandSchemas = _context