You've already forked linux-packaging-mono
Imported Upstream version 5.2.0.175
Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
This commit is contained in:
parent
4bdbaf4a88
commit
966bba02bb
78
mcs/class/Mono.Options/Documentation/en/examples/commands.cs
Normal file
78
mcs/class/Mono.Options/Documentation/en/examples/commands.cs
Normal file
@ -0,0 +1,78 @@
|
||||
// Sub-commands with Mono.Options.CommandSet
|
||||
//
|
||||
// Compile as:
|
||||
// mcs -r:Mono.Options.dll commands.cs
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Mono.Options;
|
||||
|
||||
class CommandDemo {
|
||||
public static int Main (string[] args)
|
||||
{
|
||||
var commands = new CommandSet ("commands") {
|
||||
"usage: commands COMMAND [OPTIONS]",
|
||||
"",
|
||||
"Mono.Options.CommandSet sample app.",
|
||||
"",
|
||||
"Global options:",
|
||||
{ "v:",
|
||||
"Output verbosity.",
|
||||
(int? n) => Verbosity = n.HasValue ? n.Value : Verbosity + 1 },
|
||||
"",
|
||||
"Available commands:",
|
||||
new Command ("echo", "Echo arguments to the screen") {
|
||||
Run = ca => Console.WriteLine ("{0}", string.Join (" ", ca)),
|
||||
},
|
||||
new RequiresArgs (),
|
||||
};
|
||||
return commands.Run (args);
|
||||
}
|
||||
|
||||
public static int Verbosity;
|
||||
}
|
||||
|
||||
class RequiresArgs : Command {
|
||||
|
||||
public RequiresArgs ()
|
||||
: base ("requires-args", "Class-based Command subclass")
|
||||
{
|
||||
Options = new OptionSet () {
|
||||
"usage: commands requires-args [OPTIONS]",
|
||||
"",
|
||||
"Class-based Command subclass example.",
|
||||
{ "name|n=",
|
||||
"{name} of person to greet.",
|
||||
v => Name = v },
|
||||
{ "help|h|?",
|
||||
"Show this message and exit.",
|
||||
v => ShowHelp = v != null },
|
||||
};
|
||||
}
|
||||
|
||||
public bool ShowHelp {get; private set;}
|
||||
public new string Name {get; private set;}
|
||||
|
||||
public override int Invoke (IEnumerable<string> args)
|
||||
{
|
||||
try {
|
||||
var extra = Options.Parse (args);
|
||||
if (ShowHelp) {
|
||||
Options.WriteOptionDescriptions (CommandSet.Out);
|
||||
return 0;
|
||||
}
|
||||
if (string.IsNullOrEmpty (Name)) {
|
||||
Console.Error.WriteLine ("commands: Missing required argument `--name=NAME`.");
|
||||
Console.Error.WriteLine ("commands: Use `commands help requires-args` for details.");
|
||||
return 1;
|
||||
}
|
||||
Console.WriteLine ($"Hello, {Name}!");
|
||||
return 0;
|
||||
}
|
||||
catch (Exception e) {
|
||||
Console.Error.WriteLine ("commands: {0}", CommandDemo.Verbosity >= 1 ? e.ToString () : e.Message);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user