Adding support for .NET 8.0 LTS, renaming private fields to start with underscore
This commit is contained in:
@@ -12,9 +12,9 @@ namespace AMWD.Common.Cli
|
||||
{
|
||||
#region Private data
|
||||
|
||||
private string[] args;
|
||||
private List<Argument> parsedArguments;
|
||||
private readonly List<Option> options = new();
|
||||
private string[] _args;
|
||||
private List<Argument> _parsedArguments;
|
||||
private readonly List<Option> _options = new();
|
||||
|
||||
#endregion Private data
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace AMWD.Common.Cli
|
||||
/// <param name="argsString">The string that contains the entire command line.</param>
|
||||
public void ReadArgs(string argsString)
|
||||
{
|
||||
args = ParseArgsString(argsString);
|
||||
_args = ParseArgsString(argsString);
|
||||
}
|
||||
|
||||
#endregion Custom arguments line parsing
|
||||
@@ -164,7 +164,7 @@ namespace AMWD.Common.Cli
|
||||
public Option RegisterOption(string name, int parameterCount)
|
||||
{
|
||||
var option = new Option(name, parameterCount);
|
||||
options.Add(option);
|
||||
_options.Add(option);
|
||||
return option;
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace AMWD.Common.Cli
|
||||
/// <param name="args">The command line arguments.</param>
|
||||
public void Parse(string[] args)
|
||||
{
|
||||
this.args = args ?? throw new ArgumentNullException(nameof(args));
|
||||
_args = args ?? throw new ArgumentNullException(nameof(args));
|
||||
Parse();
|
||||
}
|
||||
|
||||
@@ -188,19 +188,19 @@ namespace AMWD.Common.Cli
|
||||
public void Parse()
|
||||
{
|
||||
// Use args of the current process if no other source was given
|
||||
if (args == null)
|
||||
if (_args == null)
|
||||
{
|
||||
args = Environment.GetCommandLineArgs();
|
||||
if (args.Length > 0)
|
||||
_args = Environment.GetCommandLineArgs();
|
||||
if (_args.Length > 0)
|
||||
{
|
||||
// Skip myself (args[0])
|
||||
args = args.Skip(1).ToArray();
|
||||
_args = _args.Skip(1).ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
// Clear/reset data
|
||||
parsedArguments = new();
|
||||
foreach (var option in options)
|
||||
_parsedArguments = new();
|
||||
foreach (var option in _options)
|
||||
{
|
||||
option.IsSet = false;
|
||||
option.SetCount = 0;
|
||||
@@ -210,7 +210,7 @@ namespace AMWD.Common.Cli
|
||||
var comparison = IsCaseSensitive
|
||||
? StringComparison.Ordinal
|
||||
: StringComparison.OrdinalIgnoreCase;
|
||||
var argumentWalker = new EnumerableWalker<string>(args);
|
||||
var argumentWalker = new EnumerableWalker<string>(_args);
|
||||
bool optMode = true;
|
||||
foreach (string arg in argumentWalker.Cast<string>())
|
||||
{
|
||||
@@ -232,11 +232,11 @@ namespace AMWD.Common.Cli
|
||||
}
|
||||
|
||||
// Find the option with complete name match
|
||||
var option = options.FirstOrDefault(o => o.Names.Any(n => n.Equals(optName, comparison)));
|
||||
var option = _options.FirstOrDefault(o => o.Names.Any(n => n.Equals(optName, comparison)));
|
||||
if (option == null)
|
||||
{
|
||||
// Try to complete the name to a unique registered option
|
||||
var matchingOptions = options.Where(o => o.Names.Any(n => n.StartsWith(optName, comparison))).ToList();
|
||||
var matchingOptions = _options.Where(o => o.Names.Any(n => n.StartsWith(optName, comparison))).ToList();
|
||||
if (AutoCompleteOptions && matchingOptions.Count > 1)
|
||||
throw new Exception("Invalid option, completion is not unique: " + arg);
|
||||
|
||||
@@ -283,16 +283,16 @@ namespace AMWD.Common.Cli
|
||||
}
|
||||
else
|
||||
{
|
||||
parsedArguments.Add(argument);
|
||||
_parsedArguments.Add(argument);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parsedArguments.Add(new Argument(null, new[] { arg }));
|
||||
_parsedArguments.Add(new Argument(null, new[] { arg }));
|
||||
}
|
||||
}
|
||||
|
||||
var missingOption = options.FirstOrDefault(o => o.IsRequired && !o.IsSet);
|
||||
var missingOption = _options.FirstOrDefault(o => o.IsRequired && !o.IsSet);
|
||||
if (missingOption != null)
|
||||
throw new Exception("Missing required option: /" + missingOption.Names[0]);
|
||||
}
|
||||
@@ -312,10 +312,10 @@ namespace AMWD.Common.Cli
|
||||
{
|
||||
get
|
||||
{
|
||||
if (parsedArguments == null)
|
||||
if (_parsedArguments == null)
|
||||
Parse();
|
||||
|
||||
return parsedArguments.ToArray();
|
||||
return _parsedArguments.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -330,10 +330,10 @@ namespace AMWD.Common.Cli
|
||||
{
|
||||
get
|
||||
{
|
||||
if (parsedArguments == null)
|
||||
if (_parsedArguments == null)
|
||||
Parse();
|
||||
|
||||
return parsedArguments
|
||||
return _parsedArguments
|
||||
.Where(a => a.Option != null)
|
||||
.Select(a => a.Option)
|
||||
.ToArray();
|
||||
@@ -351,10 +351,10 @@ namespace AMWD.Common.Cli
|
||||
{
|
||||
get
|
||||
{
|
||||
if (parsedArguments == null)
|
||||
if (_parsedArguments == null)
|
||||
Parse();
|
||||
|
||||
return parsedArguments
|
||||
return _parsedArguments
|
||||
.Where(a => a.Option == null)
|
||||
.Select(a => a.Value)
|
||||
.ToArray();
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace AMWD.Common.Cli
|
||||
internal class EnumerableWalker<T> : IEnumerable<T>
|
||||
where T : class
|
||||
{
|
||||
private readonly IEnumerable<T> array;
|
||||
private IEnumerator<T> enumerator;
|
||||
private readonly IEnumerable<T> _array;
|
||||
private IEnumerator<T> _enumerator;
|
||||
|
||||
/// <summary>
|
||||
/// Initialises a new instance of the <see cref="EnumerableWalker{T}"/> class.
|
||||
@@ -20,13 +20,13 @@ namespace AMWD.Common.Cli
|
||||
/// <param name="array">The array to walk though.</param>
|
||||
public EnumerableWalker(IEnumerable<T> array)
|
||||
{
|
||||
this.array = array ?? throw new ArgumentNullException(nameof(array));
|
||||
_array = array ?? throw new ArgumentNullException(nameof(array));
|
||||
}
|
||||
|
||||
IEnumerator<T> IEnumerable<T>.GetEnumerator()
|
||||
{
|
||||
enumerator = array.GetEnumerator();
|
||||
return enumerator;
|
||||
_enumerator = _array.GetEnumerator();
|
||||
return _enumerator;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -35,8 +35,8 @@ namespace AMWD.Common.Cli
|
||||
/// <returns>The enumerator.</returns>
|
||||
public IEnumerator GetEnumerator()
|
||||
{
|
||||
enumerator = array.GetEnumerator();
|
||||
return enumerator;
|
||||
_enumerator = _array.GetEnumerator();
|
||||
return _enumerator;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -45,9 +45,9 @@ namespace AMWD.Common.Cli
|
||||
/// <returns>The next item.</returns>
|
||||
public T GetNext()
|
||||
{
|
||||
if (enumerator.MoveNext())
|
||||
if (_enumerator.MoveNext())
|
||||
{
|
||||
return enumerator.Current;
|
||||
return _enumerator.Current;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user