Maroontress.CuiMallet Example-3

CSharp · Console

/Program.cs

using System;
using System.IO;
using System.Linq;
using Maroontress.Cui;

public class Program
{
	public static void Main()
	{
		ParseArgs(["-h"]);
	}

	private static void PrintUsage(OptionSchema schema, TextWriter output)
	{
		var usage = new[]
		{
			"usage: command [Options...] [--] Arguments...",
			"",
			"Options are:",
		};
		var messages = usage.Concat(schema.GetHelpMessage());
		foreach (var m in messages)
		{
			output.WriteLine(m);
		}
	}

	public static void ParseArgs(string[] args)
	{
		var schema = Options.NewSchema()
			.Add(
				"file",
				'f',
				"FILE",
				"Specify an input file\n"
					+ "The FILE can be - for standard input")
			.Add("help", 'h', "Show help and exit");
		try
		{
			var setting = schema.Parse(args);
			var options = setting.Options;
			var arguments = setting.Arguments;
			foreach (var o in options)
			{
				if (o.Name is "help")
				{
					PrintUsage(schema, Console.Out);
					Environment.Exit(0);
				}
			}
		}
		catch (OptionParsingException e)
		{
			var output = Console.Error;
			output.WriteLine(e.Message);
			PrintUsage(schema, output);
			Environment.Exit(1);
		}
	}
}
;