// 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);
}
}
}
}
}