Closed kamran65536 closed 3 years ago
Can you show a more concrete example/use case of what you're trying to achieve? Making parameters mandatory was a design decision because they are not as explicit as options. Generally, if you want to make something optional, you should be using options.
Can you show a more concrete example/use case
Commands: husky install [dir] (default: .husky) Install Husky hooks
you asked for an example.
I also think the CommandParameter
need a default property.
I think optional parameters will play poorly in cases where there are multiple of them. I recommend using options for optional properties instead.
I suggest supporting optional, just for the last parameter. or adding default option feature (a single option could be used without --name
). It solves a lot of issues and it is really helpful.
Recently I migrated my custom CLI to clifx. everything is working fine except clifx caused a lot of unnecessary complexity to my CLI. The above install example is one of them.
husky install <SomeOptionalPath>
the other one is really annoying: before people could just pass custom arguments directly to their scripts: e.g
husky exec script1.csx
husky exec script1.csx arg1 arg2 arg3
now they have to add --args
, (this is really counterintuitive)
husky exec script1.csx --args arg1 arg2 arg3
this may not seem a big deal but it is (especially here) because these commands can be preconfigured in a JSON/YAML file.
{
"command": "dotnet",
"args": ["husky", "exec", "script1.csx", "--args", "${args}"]
},
look at the args part ☹️, it is really confusing after I've added --args
.
This clifx limitation is my only regret after migration.
In the end in my opinion you really should consider supporting this. I think you don't want to add this feature because of possible conflicts with the cmd routing feature that shouldn't be too hard to solve.
Let me know if you want to support this or not please, I need to decide what to do. thanks
Suppose I have an command like this:
As command parameters are mandatory, currently it is impossible to say:
But it is a common usage for such commands to have default value for the last parameter.
I suggest the following change in CommandBinder