using System; using CommandLine; using CommandLine.Text; using Deltares.Standard; using Deltares.Standard.Reflection; namespace Deltares.Dam.Application.Live { internal class CommandOptions : CommandLineOptionsBase { public const string DefaultOutputTimeSeriesFileName = "live.OutputTimeSeries.xml"; public const string DefaultInputTimeSeriesFileName = "live.InputTimeSeries.xml"; public const string DefaultParamFileName = "live.ParametersFile.xml"; [Option("d", "damxFile", Required = true, HelpText = "Name and path of the input DAMX file")] public string DamXFileName { get; set; } [Option("i", "inTimeSeriesFile", Required = false, DefaultValue = DefaultInputTimeSeriesFileName, HelpText = "Name and path of the input time series file. Should contain all locations or sensors")] public string TimeSeriesInputFileName { get; set; } [Option("o", "outTimeSeriesFile", Required = false, DefaultValue = DefaultOutputTimeSeriesFileName, HelpText = "Name and path of the output time series file")] public string TimeSeriesOutputFileName { get; set; } [Option("p", "paramFile", Required = false, DefaultValue = DefaultParamFileName, HelpText = "Name and path of the calculation parameters file")] public string ParameterFileName { get; set; } [Option("f", "filter", Required = false, HelpText = "Filter to tell the runner only to handle the locations specified")] public string Filter { get; set; } readonly AssemblyInfoHelper assemblyInfoHelper = new AssemblyInfoHelper(typeof(Program)); private AssemblyInfoHelper ThisAssembly { get { return assemblyInfoHelper; } } [HelpOption] public string GetUsage() { var help = new HelpText { Heading = new HeadingInfo(ThisAssembly.Title, ThisAssembly.AssemblyVersion), Copyright = new CopyrightInfo(ThisAssembly.Company, 2012), AdditionalNewLineAfterOption = true, AddDashesToOption = true }; this.HandleParsingErrorsInHelp(help); //help.AddPreOptionsLine("<>"); help.AddPreOptionsLine("Usage: damlive[.exe] -d DamXInputFile -i InputTimeSeriesFileName -o OutputTimeSeriesFileName [-p CalculationParametersFileName] [-f LocationFilter(comma separated)"); help.AddOptions(this); return help; } void HandleParsingErrorsInHelp(HelpText help) { if (this.LastPostParsingState.Errors.Count > 0) { var errors = help.RenderParsingErrorsText(this, 2); // indent with two spaces if (!string.IsNullOrEmpty(errors)) { help.AddPreOptionsLine(string.Concat(Environment.NewLine, "ERROR(S):")); help.AddPreOptionsLine(errors); } } } } }