Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

81 lines
2.2 KiB
C#

using System;
using System.Linq;
using System.Collections.Generic;
using Mono.Options;
class Test {
public static void Main (string[] args)
{
var show_help = false;
var macros = new Dictionary<string, string>();
bool create = false, extract = false, list = false;
string output = null, input = null;
string color = null;
var p = new OptionSet () {
"Usage: bundling [OPTIONS]+",
"Demo program to show the effects of bundling options and their values",
"",
"gcc-like options:",
{ "D:", "Predefine a macro with an (optional) value.",
(m, v) => {
if (m == null)
throw new OptionException ("Missing macro name for option -D.",
"-D");
macros.Add (m, v);
} },
{ "d={-->}{=>}", "Alternate macro syntax.",
(m, v) => macros.Add (m, v) },
{ "o=", "Specify the output file", v => output = v },
"",
"tar-like options:",
{ "f=", "The input file", v => input = v },
{ "x", "Extract the file", v => extract = v != null },
{ "c", "Create the file", v => create = v != null },
{ "t", "List the file", v => list = v != null },
"",
"ls-like optional values:",
{ "color:", "control whether and when color is used",
v => color = v },
"",
"other:",
{ "h|help", "show this message and exit",
v => show_help = v != null },
// default
{ "<>",
v => Console.WriteLine ("def handler: color={0}; arg={1}", color, v)},
};
try {
p.Parse (args);
}
catch (OptionException e) {
Console.Write ("bundling: ");
Console.WriteLine (e.Message);
Console.WriteLine ("Try `greet --help' for more information.");
return;
}
if (show_help) {
p.WriteOptionDescriptions (Console.Out);
return;
}
Console.WriteLine ("Macros:");
foreach (var m in (from k in macros.Keys orderby k select k)) {
Console.WriteLine ("\t{0}={1}", m, macros [m] ?? "<null>");
}
Console.WriteLine ("Options:");
Console.WriteLine ("\t Input File: {0}", input);
Console.WriteLine ("\tOuptut File: {0}", output);
Console.WriteLine ("\t Create: {0}", create);
Console.WriteLine ("\t Extract: {0}", extract);
Console.WriteLine ("\t List: {0}", list);
Console.WriteLine ("\t Color: {0}", color ?? "<null>");
}
}