// Copyright (C) Stichting Deltares 2019. All rights reserved. // // This file is part of the application DAM - Live. // // DAM - UI is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using CommandLine; using CommandLine.Text; 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 }; 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 (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); } } } } }