| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Tweak cmArgumentParser to ignore positional arguments once a keyword
argument has been seen. This prevents mingling of keyword arguments
being able to effectively skip positional arguments, with later
arguments being picked up again; this seems highly likely to lead to
user confusion. This is also consistent with how other languages (e.g.
Python) handle a mix of "named" and positional arguments.
|
|
|
|
|
|
| |
Some clients have been explicitly checking whether the string specified
after a keyword is empty. Offer them a way to specify that the string
must be non-empty as part of the binding type.
|
| |
|
|
|
|
| |
Replace the boolean expectation with an integer count.
|
|
|
|
| |
Use a `std::function` to support general actions on value arguments.
|
|
|
|
| |
All clients have been ported to use a binding instead.
|
|
|
|
|
| |
Some clients ask for this list in their `Parse()` call.
Offer them a way to express this request as a binding.
|
|
|
|
|
| |
All clients have been converted to encoding this requirement in their
bindings.
|
|
|
|
|
|
|
|
| |
The `keywordsMissingValue` argument to `Parse()` is now needed only for
the `cmake_parse_arguments` result `_KEYWORDS_MISSING_VALUES`. Offer
its implementation a private binding for this. Our internal clients can
use `ArgumentParser::NonEmpty<>` and friends to enforce the presence of
values.
|
|
|
|
|
|
|
|
|
| |
Since commit f46b2e9142 (cmArgumentParser: Model maybe-missing string
with wrapper type, 2022-07-06) we know during parsing whether or not it
is an error for a keyword to be missing a value. Record such errors in
the parse results structure. Offer clients a helper method to report
them. This provides clients with an alternative to manually checking
`keywordsMissingValue` and generating their own error message.
|
| |
|
|
|
|
| |
Avoid allocating missing keyword vector unnecessarily.
|
|
|
|
|
| |
Record `Parse` parameters during construction of the internal instance
instead of passing them to every method.
|
|
|
|
|
|
| |
Bindings to `std::string` require one value. Some clients have been
filtering `keywordsMissingValue` to support keywords that tolerate a
missing value. Offer them a type-safe way to achieve this instead.
|
|
|
|
|
|
|
|
| |
Previously bindings to `std::vector<std::string>` required at least one
value. Some clients have been filtering `keywordsMissingValue` to
support keywords followed by empty lists. Instead, require clients to
specify whether a keyword's list can be empty as part of the binding
type.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang `-Wcomma` warns:
```
Source/cmArgumentParser.cxx:58:42: warning: possible misuse of comma operator
this->CurrentList = (val.emplace_back(), &val.back());
^
```
This was introduced by commit 4359fe133b (Introduce cmArgumentParser,
2019-03-23). Suppress it with the suggested cast.
|
|
|