mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Rename things to make them slightly more consistent
This commit is contained in:
@@ -9,7 +9,7 @@ namespace CliFx.Tests
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class CommandInputParserTests
|
public class CommandInputParserTests
|
||||||
{
|
{
|
||||||
private static IEnumerable<TestCaseData> GetTestCases_ParseInput()
|
private static IEnumerable<TestCaseData> GetTestCases_ParseCommandInput()
|
||||||
{
|
{
|
||||||
yield return new TestCaseData(new string[0], CommandInput.Empty);
|
yield return new TestCaseData(new string[0], CommandInput.Empty);
|
||||||
|
|
||||||
@@ -160,14 +160,14 @@ namespace CliFx.Tests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCaseSource(nameof(GetTestCases_ParseInput))]
|
[TestCaseSource(nameof(GetTestCases_ParseCommandInput))]
|
||||||
public void ParseInput_Test(IReadOnlyList<string> commandLineArguments, CommandInput expectedCommandInput)
|
public void ParseCommandInput_Test(IReadOnlyList<string> commandLineArguments, CommandInput expectedCommandInput)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var parser = new CommandInputParser();
|
var parser = new CommandInputParser();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var commandInput = parser.ParseInput(commandLineArguments);
|
var commandInput = parser.ParseCommandInput(commandLineArguments);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
commandInput.Should().BeEquivalentTo(expectedCommandInput);
|
commandInput.Should().BeEquivalentTo(expectedCommandInput);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace CliFx.Tests
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public partial class CommandOptionInputConverterTests
|
public partial class CommandOptionInputConverterTests
|
||||||
{
|
{
|
||||||
private static IEnumerable<TestCaseData> GetTestCases_ConvertOption()
|
private static IEnumerable<TestCaseData> GetTestCases_ConvertOptionInput()
|
||||||
{
|
{
|
||||||
yield return new TestCaseData(
|
yield return new TestCaseData(
|
||||||
new CommandOptionInput("option", "value"),
|
new CommandOptionInput("option", "value"),
|
||||||
@@ -307,14 +307,14 @@ namespace CliFx.Tests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[TestCaseSource(nameof(GetTestCases_ConvertOption))]
|
[TestCaseSource(nameof(GetTestCases_ConvertOptionInput))]
|
||||||
public void ConvertOption_Test(CommandOptionInput optionInput, Type targetType, object expectedConvertedValue)
|
public void ConvertOptionInput_Test(CommandOptionInput optionInput, Type targetType, object expectedConvertedValue)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var converter = new CommandOptionInputConverter();
|
var converter = new CommandOptionInputConverter();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var convertedValue = converter.ConvertOption(optionInput, targetType);
|
var convertedValue = converter.ConvertOptionInput(optionInput, targetType);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
convertedValue.Should().BeEquivalentTo(expectedConvertedValue);
|
convertedValue.Should().BeEquivalentTo(expectedConvertedValue);
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace CliFx
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var commandInput = _commandInputParser.ParseInput(commandLineArguments);
|
var commandInput = _commandInputParser.ParseCommandInput(commandLineArguments);
|
||||||
|
|
||||||
var availableCommandSchemas = _commandSchemaResolver.GetCommandSchemas(_configuration.CommandTypes);
|
var availableCommandSchemas = _commandSchemaResolver.GetCommandSchemas(_configuration.CommandTypes);
|
||||||
var matchingCommandSchema = availableCommandSchemas.FindByName(commandInput.CommandName);
|
var matchingCommandSchema = availableCommandSchemas.FindByName(commandInput.CommandName);
|
||||||
|
|||||||
@@ -29,25 +29,25 @@ namespace CliFx.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public void InitializeCommand(ICommand command, CommandSchema schema, CommandInput input)
|
public void InitializeCommand(ICommand command, CommandSchema commandSchema, CommandInput commandInput)
|
||||||
{
|
{
|
||||||
command.GuardNotNull(nameof(command));
|
command.GuardNotNull(nameof(command));
|
||||||
schema.GuardNotNull(nameof(schema));
|
commandSchema.GuardNotNull(nameof(commandSchema));
|
||||||
input.GuardNotNull(nameof(input));
|
commandInput.GuardNotNull(nameof(commandInput));
|
||||||
|
|
||||||
// Keep track of unset required options to report an error at a later stage
|
// Keep track of unset required options to report an error at a later stage
|
||||||
var unsetRequiredOptions = schema.Options.Where(o => o.IsRequired).ToList();
|
var unsetRequiredOptions = commandSchema.Options.Where(o => o.IsRequired).ToList();
|
||||||
|
|
||||||
// Set command options
|
// Set command options
|
||||||
foreach (var optionInput in input.Options)
|
foreach (var optionInput in commandInput.Options)
|
||||||
{
|
{
|
||||||
// Find matching option schema for this option input
|
// Find matching option schema for this option input
|
||||||
var optionSchema = schema.Options.FindByAlias(optionInput.Alias);
|
var optionSchema = commandSchema.Options.FindByAlias(optionInput.Alias);
|
||||||
if (optionSchema == null)
|
if (optionSchema == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Convert option to the type of the underlying property
|
// Convert option to the type of the underlying property
|
||||||
var convertedValue = _commandOptionInputConverter.ConvertOption(optionInput, optionSchema.Property.PropertyType);
|
var convertedValue = _commandOptionInputConverter.ConvertOptionInput(optionInput, optionSchema.Property.PropertyType);
|
||||||
|
|
||||||
// Set value of the underlying property
|
// Set value of the underlying property
|
||||||
optionSchema.Property.SetValue(command, convertedValue);
|
optionSchema.Property.SetValue(command, convertedValue);
|
||||||
|
|||||||
@@ -11,9 +11,8 @@ namespace CliFx.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class CommandInputParser : ICommandInputParser
|
public class CommandInputParser : ICommandInputParser
|
||||||
{
|
{
|
||||||
// TODO: refactor
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public CommandInput ParseInput(IReadOnlyList<string> commandLineArguments)
|
public CommandInput ParseCommandInput(IReadOnlyList<string> commandLineArguments)
|
||||||
{
|
{
|
||||||
commandLineArguments.GuardNotNull(nameof(commandLineArguments));
|
commandLineArguments.GuardNotNull(nameof(commandLineArguments));
|
||||||
|
|
||||||
|
|||||||
@@ -136,15 +136,15 @@ namespace CliFx.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public object ConvertOption(CommandOptionInput option, Type targetType)
|
public object ConvertOptionInput(CommandOptionInput optionInput, Type targetType)
|
||||||
{
|
{
|
||||||
option.GuardNotNull(nameof(option));
|
optionInput.GuardNotNull(nameof(optionInput));
|
||||||
targetType.GuardNotNull(nameof(targetType));
|
targetType.GuardNotNull(nameof(targetType));
|
||||||
|
|
||||||
// Single value
|
// Single value
|
||||||
if (option.Values.Count <= 1)
|
if (optionInput.Values.Count <= 1)
|
||||||
{
|
{
|
||||||
var value = option.Values.SingleOrDefault();
|
var value = optionInput.Values.SingleOrDefault();
|
||||||
return ConvertValue(value, targetType);
|
return ConvertValue(value, targetType);
|
||||||
}
|
}
|
||||||
// Multiple values
|
// Multiple values
|
||||||
@@ -154,7 +154,7 @@ namespace CliFx.Services
|
|||||||
var underlyingType = targetType.GetEnumerableUnderlyingType() ?? typeof(object);
|
var underlyingType = targetType.GetEnumerableUnderlyingType() ?? typeof(object);
|
||||||
|
|
||||||
// Convert values to that type
|
// Convert values to that type
|
||||||
var convertedValues = option.Values.Select(v => ConvertValue(v, underlyingType)).ToNonGenericArray(underlyingType);
|
var convertedValues = optionInput.Values.Select(v => ConvertValue(v, underlyingType)).ToNonGenericArray(underlyingType);
|
||||||
var convertedValuesType = convertedValues.GetType();
|
var convertedValuesType = convertedValues.GetType();
|
||||||
|
|
||||||
// Assignable from array of values (e.g. T[], IReadOnlyList<T>, IEnumerable<T>)
|
// Assignable from array of values (e.g. T[], IReadOnlyList<T>, IEnumerable<T>)
|
||||||
@@ -167,7 +167,7 @@ namespace CliFx.Services
|
|||||||
return arrayConstructor.Invoke(new object[] {convertedValues});
|
return arrayConstructor.Invoke(new object[] {convertedValues});
|
||||||
|
|
||||||
throw new InvalidCommandOptionInputException(
|
throw new InvalidCommandOptionInputException(
|
||||||
$"Can't convert sequence of values [{option.Values.JoinToString(", ")}] to type [{targetType}].");
|
$"Can't convert sequence of values [{optionInput.Values.JoinToString(", ")}] to type [{targetType}].");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ namespace CliFx.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Populates an instance of <see cref="ICommand"/> with specified input according to specified schema.
|
/// Populates an instance of <see cref="ICommand"/> with specified input according to specified schema.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void InitializeCommand(ICommand command, CommandSchema schema, CommandInput input);
|
void InitializeCommand(ICommand command, CommandSchema commandSchema, CommandInput commandInput);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,6 @@ namespace CliFx.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parses specified command line arguments.
|
/// Parses specified command line arguments.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
CommandInput ParseInput(IReadOnlyList<string> commandLineArguments);
|
CommandInput ParseCommandInput(IReadOnlyList<string> commandLineArguments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,6 @@ namespace CliFx.Services
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts an option to specified target type.
|
/// Converts an option to specified target type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
object ConvertOption(CommandOptionInput option, Type targetType);
|
object ConvertOptionInput(CommandOptionInput optionInput, Type targetType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user