Skip to content

Add Choices Option #172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
zackmark29 opened this issue Apr 27, 2022 · 4 comments
Open

Add Choices Option #172

zackmark29 opened this issue Apr 27, 2022 · 4 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@zackmark29
Copy link

I can't seem find any in the documentation about choices option.
Like in python there is choices option in the argument. Is it possible to do with this great extension?

@Matthiee
Copy link
Member

At the moment it is not possible.

However I feel like you could get very close using enum's.

Example:

public enum TestEnum
{
    Value1,
    Value2,
    Value3,
}

public class Options
{
    public TestEnum MyEnum { get; set; }
}

parser.Configure(opt => opt.MyEnum)
                .Name("e");
> Example.exe -e "Value2"
> MyEnum=Value2
> Example.exe -e "Value10"
> Unable to parse option '-e|--e' value 'value10' is invalid!

Another way to achieve this without enums would be to use FluentValidations Extension.

@zackmark29
Copy link
Author

At the moment it is not possible.

However I feel like you could get very close using enum's.

Example:

public enum TestEnum
{
    Value1,
    Value2,
    Value3,
}

public class Options
{
    public TestEnum MyEnum { get; set; }
}

parser.Configure(opt => opt.MyEnum)
                .Name("e");
> Example.exe -e "Value2"
> MyEnum=Value2
> Example.exe -e "Value10"
> Unable to parse option '-e|--e' value 'value10' is invalid!

Another way to achieve this without enums would be to use FluentValidations Extension.

Thank you for the response. Yeah Enum is good idea I'll do it instead.
I still preferred your extension it's easy to use :)

@zackmark29
Copy link
Author

zackmark29 commented Apr 27, 2022

Thank you that solved my problem. However there's just little problem when I set the default and input invalid value, It's not throwing the exception but still getting the default value only. But it's ok I just skip the default value

@Matthiee
Copy link
Member

I do like the choices idea.

API could look something like this:

IOptionsBuilder<T> Choices(IEnumerable<T> choices);

parser.Configure(opt => opt.SomeOption)
          .Choices(new []{  1, 2, 3 });

Not sure how this would work when the option type is a Collection.

@Matthiee Matthiee added enhancement New feature or request help wanted Extra attention is needed labels Apr 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants