public string BuildHelpMessage(CommandHelpDefinition definition, bool showCommandName) { var sb = new StringBuilder(); sb.AppendLine(BuildUsageMessage(definition, showCommandName)); sb.AppendLine(); if (!string.IsNullOrEmpty(definition.Description)) { sb.AppendLine(definition.Description); sb.AppendLine(); } if (definition.Options.Any()) { sb.Append(BuildArgumentsMessage(definition)); sb.Append(BuildOptionsMessage(definition)); } else { sb.AppendLine("Options:"); sb.AppendLine(" ()"); sb.AppendLine(); } return(sb.ToString()); }
public string BuildOptionsMessage(CommandHelpDefinition definition) { var optionsFormatted = definition.Options .Where(x => !x.Index.HasValue) .Select(x => (Options: string.Join(", ", x.Options) + (x.IsFlag ? string.Empty : $" {x.FormattedValueTypeName}"), x.Description, x.IsRequired, x.IsFlag, x.DefaultValue)) .ToArray(); if (!optionsFormatted.Any()) { return(string.Empty); } var maxWidth = optionsFormatted.Max(x => x.Options.Length); var sb = new StringBuilder(); sb.AppendLine("Options:"); foreach (var opt in optionsFormatted) { var options = opt.Options; var padding = maxWidth - options.Length; sb.Append(" "); sb.Append(options); for (var i = 0; i < padding; i++) { sb.Append(' '); } sb.Append(" "); sb.Append(opt.Description); if (opt.IsFlag) { sb.Append($" (Optional)"); } else if (opt.DefaultValue != null) { sb.Append($" (Default: {opt.DefaultValue})"); } else if (opt.IsRequired) { sb.Append($" (Required)"); } sb.AppendLine(); } sb.AppendLine(); return(sb.ToString()); }
public string BuildUsageMessage(CommandHelpDefinition definition, bool showCommandName) { var sb = new StringBuilder(); sb.Append($"Usage: {GetExecutionCommandName()}"); if (showCommandName) { sb.Append($" {(definition.CommandAliases.Any() ? definition.CommandAliases[0] : definition.Command)}"); } foreach (var opt in definition.Options.Where(x => x.Index.HasValue)) { sb.Append($" <{(string.IsNullOrEmpty(opt.Description) ? opt.Options[0] : opt.Description)}>"); } if (definition.Options.Any(x => !x.Index.HasValue)) { sb.Append(" [options...]"); } return(sb.ToString()); }
public string BuildArgumentsMessage(CommandHelpDefinition definition) { var argumentsFormatted = definition.Options .Where(x => x.Index.HasValue) .Select(x => (Argument: $"[{x.Index}] <{x.ValueTypeName}>", x.Description, x.IsRequired, x.DefaultValue)) .ToArray(); if (!argumentsFormatted.Any()) { return(string.Empty); } var maxWidth = argumentsFormatted.Max(x => x.Argument.Length); var sb = new StringBuilder(); sb.AppendLine("Arguments:"); foreach (var arg in argumentsFormatted) { var padding = maxWidth - arg.Argument.Length; sb.Append(" "); sb.Append(arg.Argument); for (var i = 0; i < padding; i++) { sb.Append(' '); } sb.Append(" "); sb.AppendLine(arg.Description); } sb.AppendLine(); return(sb.ToString()); }