private void _DrawUseage(IEnumerable <IOption> options, IEnumerable <IArgument> arguments, CommandLineWriter writer) { var head = $"usage: {Name}"; writer.Write(head); writer.IndentLevel = $"{head} ".Length; // draw options foreach (var option in options) { writer.Write($" {option.GetDrawUsageHead()}"); } var anySubcommand = Subcommands.Any(); if (arguments.Any() || anySubcommand) { writer.Write(" [--]"); } // draw arguments foreach (var argument in arguments) { writer.Write($" {argument.GetDrawUsageHead()}"); } if (anySubcommand) { writer.Write($" <subcommand> [sub-options] [sub-args]"); } writer.IndentLevel = 0; writer.WriteLine(); }
private void _DrawArguments(IReadOnlyList <IArgument> arguments, IReadOnlyList <string> explainHeads, CommandLineWriter writer, int minLength) { if (arguments.Count <= 0) { return; } writer.WriteLine(); writer.WriteLine("Available args"); writer.IncreaseIndent(); for (var i = 0; i < arguments.Count; ++i) { var argument = arguments[i]; var head = explainHeads[i]; head = _FillHead(minLength, head); writer.Write(head); _WriteDesc(writer, argument.Desc); writer.WriteLine(); } writer.DecreaseIndent(); }
private void _DrawOptions(IReadOnlyList <IOption> options, IReadOnlyList <string> explainHeads, CommandLineWriter writer, int minLength) { if (options.Count <= 0) { return; } writer.WriteLine(); writer.WriteLine("Available options"); writer.IncreaseIndent(); for (int i = 0; i < options.Count; ++i) { var option = options[i]; var head = explainHeads[i]; head = _FillHead(minLength, head); writer.Write(head); _WriteDesc(writer, option.Desc); writer.WriteLine(); } writer.DecreaseIndent(); }
private static void _WriteDesc(CommandLineWriter writer, string?desc) { if (desc != null) { var oldLevel = writer.IndentLevel; writer.IndentLevel = writer.CurCharCount; writer.Write(desc, true); writer.IndentLevel = oldLevel; } }
private void _DrawSubcommands(CommandLineWriter writer, int minLength) { if (mGroup2Subcommands.Count <= 0) { return; } writer.WriteLine(); writer.WriteLine("Available subcommands"); writer.IncreaseIndent(); foreach (var group in mGroups) { if (mGroups.Count > 1) { writer.WriteLine(group); writer.IncreaseIndent(); } var commands = mGroup2Subcommands[group]; foreach (var(command, _) in commands) { var head = _FillHead(minLength, command.Name); writer.Write(head); _WriteDesc(writer, command.Desc); writer.WriteLine(); } if (mGroups.Count > 1) { writer.DecreaseIndent(); } } writer.DecreaseIndent(); }