Comments (10)
It's possible, as long as you attach the [<Rest>]
attribute to the corresponding parameter. So in your case,
type Params =
| [<Rest>] Foo of string
which can then be used like so:
--foo string1 string2 string3
Note however, that Rest
parameters should be placed at the end of your command line arguments, as they will consume all remaining tokens. I would find it safer -particularly if you plan to offer your application to other users- to simply use the following pattern, without the Rest
attribute:
--foo string1 --foo string2 --foo string3
from argu.
So then I will get a string "string1 string2 string3" in the parse of Foo?
from argu.
Nope. You will be getting list of [ Foo "string1" ; Foo "string2" ; Foo "string3" ]
.
from argu.
And parser.GetResult <@ Foo @>
? That's an array then?
from argu.
parser.GetResults <@ Foo @>
gives you a list of strings.
from argu.
Thanks! =)
from argu.
Pleasure :)
from argu.
"Note however, that Rest parameters should be placed at the end of your command line arguments, as they will consume all remaining tokens."
I think it's not a very nice solution. I'd like the following to compile:
type Arg =
| Hosts of string list
| User of string
...
parser.ParseCommandLine ([|"--hosts"; "h1"; "h2"; "h3"; "--user"; "u"|])
Is this hard to implement?
from argu.
I chose this way originally as it emulates the style of ArgParser in the
Powerpack. This is pretty straightforward to implement, but it comes with
certain ambiguity. For instance, how do you detect cases in which "--user"
was intended by the user as a host parameter? Weak argument, I know, but
keep in mind that it is possible to specify alternative identifiers for
each parameter that may lack the dash prefix.
Currently, the recommended way to specify multiple arguments is to use the
following style:
"--host host1 --host host2 --host host3"
This will still accumulate your parsed results in a list when you query
them and is a more idiomatic style command line argument scheme afaik.
On Wednesday, June 4, 2014, Vasily Kirichenko [email protected]
wrote:
"Note however, that Rest parameters should be placed at the end of your
command line arguments, as they will consume all remaining tokens."I think it's not a very nice solution. I'd like the following to compile:
type Arg =
| Hosts of string list
| User of string... parser.ParseCommandLine ([|"--hosts"; "h1"; "h2"; "h3"; "--user"; "u"|])Is this hard to implement?
—
Reply to this email directly or view it on GitHub
#4 (comment).
Sent from Gmail Mobile
from argu.
Now I agree that the current solution is OK. Thanks!
from argu.
Related Issues (20)
- Feature idea - Helper function for subcommand field
- Release? HOT 2
- Query: Command line argument character (I.E. "--", "/") HOT 2
- Question: attribute or possibility to customize casing of commands? HOT 2
- How to add an optional boolean flag? HOT 5
- appsetting.json and NET5 HOT 9
- `-h` short option for `--help` HOT 2
- Empty usage prevents line breaks between options HOT 1
- Expose ArguParseException or similar for use within apps HOT 2
- [Query] Is .net7 support for trimmed binaries planned? HOT 3
- ChatGpt4 proposed Argu, but as an ocaml developer, it is really hard to understand the ParseResults<Args> part HOT 3
- Make a main command optional in subcommand
- Have a positional argument as optional with main command HOT 4
- System.Reflection.AmbiguousMatchException occurs when `CLIArguments` contains `Tag` HOT 1
- It would be nice to know which version I'm running. Add --version HOT 1
- Additional maintainers HOT 13
- feat: Support for MSBuild-like key-value lists HOT 2
- feat(ParseResults): Alias *PostProcessResult* -> *GetResult* HOT 4
- Invalid error when parsing a sub command with only one parameter fixed with the 'ExactlyOnce' attribute. HOT 2
- Regression: Fail always on mandatory HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from argu.