1
0

Adding support for .NET 8.0 LTS, renaming private fields to start with underscore

This commit is contained in:
2023-12-29 01:58:40 +01:00
parent 8bd511a936
commit 99d3f7758a
59 changed files with 922 additions and 871 deletions

View File

@@ -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();

View File

@@ -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
{