Commit Graph

1390 Commits

Author SHA1 Message Date
pre-commit-ci[bot]
98e47b4c53 chore(deps): pre-commit.ci autoupdate (#1256)
<!--pre-commit.ci start-->
updates:
- [github.com/DavidAnson/markdownlint-cli2: v0.18.1 →
v0.19.0](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.18.1...v0.19.0)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-19 04:32:15 -08:00
pre-commit-ci[bot]
7fabe18c24 chore(deps): pre-commit.ci autoupdate (#1253)
<!--pre-commit.ci start-->
updates:
- [github.com/psf/black-pre-commit-mirror: 25.9.0 →
25.11.0](https://github.com/psf/black-pre-commit-mirror/compare/25.9.0...25.11.0)
- [github.com/pre-commit/mirrors-clang-format: v21.1.2 →
v21.1.5](https://github.com/pre-commit/mirrors-clang-format/compare/v21.1.2...v21.1.5)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-11 07:12:01 -08:00
Philip Top
c9921127d7 Update some documentation and book chapters (#1250)
Update documentation related to formatters and some other recent
updates.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-09 05:55:23 -08:00
pre-commit-ci[bot]
e33d09278f chore(deps): pre-commit.ci autoupdate (#1248)
<!--pre-commit.ci start-->
updates:
- [github.com/DavidAnson/markdownlint-cli2: v0.12.0 →
v0.18.1](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.12.0...v0.18.1)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-07 04:03:15 -08:00
Philip Top
3a69ed51c0 option name formatting in help (#1247)
Add some controls to manipulate option string formatting, including
disabling the default values, disabling default flag values, disabling
type names.

Fixes #857

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-03 04:55:14 -08:00
Philip Top
3a1946e965 update precommit markdownlint and add permissions on workflow files (#1246)
test out some precommit hooks and other updates

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-28 07:26:18 -07:00
Philip Top
bfffd37e1f code simplification (#1244)
Based on #1242, I don't think this is required but it does remove that
issue and checking on compiler explore it does simplify the generated
code.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
v2.6.1
2025-10-27 06:17:19 -07:00
Philip Top
8ddadd7cea patch release for recent fixes (#1241)
updates for patch release

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-25 12:53:47 -07:00
Philip Top
8b1d067374 try adding a test for failure with macos arm precompile (#1238)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-24 05:36:00 -07:00
allcontributors[bot]
4d78aa30d6 📝 Add LunarWatcher as a contributor for doc (#1240)
Adds @LunarWatcher as a contributor for doc.

This was requested by phlptp [in this
comment](https://github.com/CLIUtils/CLI11/pull/1239#issuecomment-3434894391)

[skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-10-23 04:25:08 -07:00
Olivia (Zoe)
1d94f2bbf9 Fix incorrect links to validator examples (#1239)
8c77664bd0 added the files and the links,
but the links were off by one character and therefore don't work. This
PR fixes them
2025-10-22 20:02:36 -07:00
Philip Top
3914826ef8 Version update (#1219)
update changelog for 2.6 release

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
v2.6.0
2025-10-20 06:07:51 -07:00
Theodor Nesfeldt Engøy
8225a6ad4e ci(cifuzz): keep dry-run until google/oss-fuzz#14131 merges (#1232)
Flip CIFuzz out of dry‑run now that cli11 exists in OSS‑Fuzz.

---------

Co-authored-by: TheodorNEngoy <[email protected]>
2025-10-19 06:11:33 -07:00
allcontributors[bot]
3b84cbae64 📝 Add TheodorNEngoy as a contributor for infra (#1231)
Adds @TheodorNEngoy as a contributor for infra.

This was requested by phlptp [in this
comment](https://github.com/CLIUtils/CLI11/pull/1225#issuecomment-3418608931)

[skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-10-18 10:48:50 -07:00
Theodor Nesfeldt Engøy
0c4cd5f079 ci: add CIFuzz (#1225)
Add OSS-Fuzz CIFuzz workflow to run fuzzers on PRs for project 'cli11'.

---------

Co-authored-by: TheodorNEngoy <[email protected]>
2025-10-18 10:48:36 -07:00
Philip Top
16a2840b4e Add CodeQL analysis workflow configuration (#1230)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-18 10:47:57 -07:00
Philip Top
3388e8ea49 Help spacing (#1229)
Fix the help spacing and double printing of footers in certain
circumstances

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-18 08:45:09 -07:00
Volker Christian
0104dceb17 Option callback priority v2 (#1226)
Extension allowing all possible priority combinations.
Add a field callback_priority to OptionBase.

---------

Co-authored-by: Philip Top <phlptp@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-18 06:52:55 -07:00
pre-commit-ci[bot]
a41ba814b3 chore(deps): pre-commit.ci autoupdate (#1220)
<!--pre-commit.ci start-->
updates:
- https://github.com/psf/blackhttps://github.com/psf/black-pre-commit-mirror
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-07 05:48:42 -07:00
Philip Top
e591f4aac5 ensure the parse order is reset on clear() (#1218)
Fixes #1216
2025-10-03 06:08:47 -07:00
pre-commit-ci[bot]
e83695fb10 chore(deps): pre-commit.ci autoupdate (#1215)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v21.1.1 →
v21.1.2](https://github.com/pre-commit/mirrors-clang-format/compare/v21.1.1...v21.1.2)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-30 05:05:00 -07:00
pre-commit-ci[bot]
5248d5b352 chore(deps): pre-commit.ci autoupdate (#1210)
<!--pre-commit.ci start-->
updates:
- [github.com/psf/black: 25.1.0 →
25.9.0](https://github.com/psf/black/compare/25.1.0...25.9.0)
- [github.com/pre-commit/mirrors-clang-format: v21.1.0 →
v21.1.1](https://github.com/pre-commit/mirrors-clang-format/compare/v21.1.0...v21.1.1)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-23 10:40:30 -07:00
allcontributors[bot]
89dc726939 📝 Add romanholidaypancakes as a contributor for code (#1208)
Adds @romanholidaypancakes as a contributor for code.

This was requested by phlptp [in this
comment](https://github.com/CLIUtils/CLI11/pull/1206#issuecomment-3292000117)

[skip ci]

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2025-09-15 07:34:09 -07:00
romanholidaypancakes
8bc29b83e9 Update App.hpp (#1206)
Compatible compile option: /GR-
2025-09-15 05:52:01 -07:00
Philip Top
be52eb6972 Contrib update (#1205)
update contributors
2025-09-08 05:24:24 -07:00
Philip Top
c8dc5f627a add permission validators as an Extra Validator (#1203)
an update of #250 

Fixes #249

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-08 05:16:49 -07:00
Philip Top
ee326d647b Fuzzer issues (#1202)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-02 07:07:01 -07:00
pre-commit-ci[bot]
dd99ec7752 chore(deps): pre-commit.ci autoupdate (#1201)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v20.1.8 →
v21.1.0](https://github.com/pre-commit/mirrors-clang-format/compare/v20.1.8...v21.1.0)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-02 04:49:34 -07:00
Philip Top
8c77664bd0 move some of the Validators to an ExtraValidators file (#1192)
Rework some of the validator locations, add documentation, and fix some
lingering issues with validators.
The extra will will enable additions of some new validators and reduce
compile times for those that are not needed.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-01 05:13:21 -07:00
Philip Top
1ab8646760 duplicate footer (#1200)
fix an issue with duplicate footers being printed with help_all

Fixes #1183

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-29 12:38:46 -07:00
Philip Top
f7e4695ed8 fix edge case with config files pointer (#1199)
generating a seg fault if no default and no config file provided.

Fixes #1197 

This was likely introduced by the combination of fixes for some issues
with the config parsing and some updates to the as<T> method a while
back. This edge case on the handling of the config pointer with as was
not overlooked in the earlier testing.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-28 17:11:03 -07:00
Philip Top
399e729a55 Fix issue with multiline array interpretation for toml (#1196)
if the first line only contained a single character.

Fixes #1195
2025-08-27 17:40:51 -07:00
Radim Krčmář
e7e8de0346 formatter: add long_option_alignment_ratio (#1185)
The default formatter has hardcoded ratio at which the long options are
aligned. It's currently 1/3 of the column, which makes the default look
awkward:
```
  -h,     --help              Print
          --option            Something
```
A ->long_option_alignment_ratio(6/30.f) allows output to look like this:
```
  -h, --help                  Print
      --option                Something
```
The 1/3 ratio is also bad if you want to print "descriptive" long
options on a single line, because then you might want to increase the
column width, but that means you waste more space on short options.

e.g. ->column_width(46)
```
  -l,          --very-descriptive-long-option  Something
```
vs. ->column_width(38)
```
  -l,       --very-descriptive-long-option
                                      Something
```
vs. ->column_width(38) ->long_option_alignment_ratio(6/38.f)
```
  -l, --very-descriptive-long-option  Something
```
Any absolute offset `X` can be set as `X/column_width`, so provide a
ratio-based interface.

I would have prefered to give an absolute integer offset, but we still
have to preserve the functionality that does 1/3 if user changed
nothing, which means that ratio-based interface is simpler.

I don't have a good idea for the name, "short_option_ratio" might work
as well.
The setter does not sanity check that the value is in [0;1] range.

---------

Signed-off-by: Radim Krčmář <radim@krcmar.dev>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-27 05:17:20 -07:00
pre-commit-ci[bot]
6e9b07734c chore(deps): pre-commit.ci autoupdate (#1193)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/pre-commit-hooks: v5.0.0 →
v6.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v5.0.0...v6.0.0)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-12 05:15:12 -07:00
Philip Top
dfd3d90078 use of string_view in as<T> method (#1187)
Address Issue #881, allowing use of string_view in the as<XX> method on
options.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-09 10:42:18 -04:00
Henry Schreiner
bb9bd85e3b chore: require CMake 3.14+ (#1182)
3.15 is a good minimum these days, and what pybind11, etc. now use.
(Edit: we are using some really old docker containers, so let's do 3.14+
for now).

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-07-25 10:09:07 -04:00
Henry Schreiner
e351ddd522 chore: add CMake presets (#1181)
Add two presets (default and tidy).

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-25 10:05:37 -04:00
Philip Top
2a59b281f0 reorder the processing of requirements and callbacks. (#1186)
Check the requirements first.
Previously the callbacks were done first, but with custom callbacks this
cause side effects unexpectedly.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-25 06:53:17 -07:00
Prashanth Mundkur
a9b7b96701 Update version in license to match source. (#1180)
For packagers that need to install license files, it helps when the
version in the license matches the version of the source used in the
package.
2025-07-24 06:28:37 -07:00
Philip Top
c5153634db Fix warnings and small issues (#1178)
try some things with no standard libraries
Add arm64 and freebsd build and tests
fix a discrepancy in the handling of chars on Arm processors

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-18 07:18:26 -07:00
pre-commit-ci[bot]
587129a170 chore(deps): pre-commit.ci autoupdate (#1177)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v20.1.7 →
v20.1.8](https://github.com/pre-commit/mirrors-clang-format/compare/v20.1.7...v20.1.8)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-15 05:25:51 -07:00
pre-commit-ci[bot]
d0ac90b5f2 chore(deps): pre-commit.ci autoupdate (#1174)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v20.1.6 →
v20.1.7](https://github.com/pre-commit/mirrors-clang-format/compare/v20.1.6...v20.1.7)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-14 11:30:33 -07:00
Dominik Nussbaumer
7a7ba4b9ca Allow rvalue references to be use with add_flag with no assignment (#1173)
I am starting to use CLI11 in a project and I came across an
inconvenience in code like this

```c++
const std::string description(std::format("description"));
app.add_flag("--flag", description);
```
As far as I can tell. I cannot directly use the description here. The
reason seems to be to distinguish between assignment and description. So
only `const std::string` or `const char*` and so on can be used here.
But a `const std::string &&` can not be used.

With the changes in the PR the code can also be written like this:
```c++
app.add_flag("--flag", std::format("description"));
```

The `add_flag` function can then be used with a const string or an
rvalue reference to a string.


A bit OT: I was a bit confused by this part of the existing comment ` if
a variable string is passed that variable will be assigned the results
from the flag` I think this might be wrong, but I am not sure.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-27 06:36:06 -07:00
Philip Top
13658df9e1 remove use of windows-2019 image in azure CI tests (#1172)
Azure windows 2019 image is being deprecated, shift CI to windows-2022
and windows 2025 images
add tests for coverage and a few missing checks for duplication options.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-18 20:19:28 -07:00
Philip Top
26bb3f2e30 More fuzzing2 (#1170)
add mechanic for fuzzing subcommands, and several fixes for found issues
from longer fuzzer runs

This includes some issues with option group positional name ambiguity, issue with join multioption policy and config files, and a few edge cases for configuration of multiline output interpretation.

Also added complex variables to the options, no issues found from this addition. 

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-18 05:21:18 -07:00
pre-commit-ci[bot]
569ca73b0b chore(deps): pre-commit.ci autoupdate (#1171)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v20.1.5 →
v20.1.6](https://github.com/pre-commit/mirrors-clang-format/compare/v20.1.5...v20.1.6)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-17 06:07:57 -07:00
Philip Top
328ac68432 Subcommand plurality (#1169)
Partially address #1168 fix subcommand plurality when subcommand_max count is 0

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-05 17:48:01 -07:00
Theo Paris
542ef71d8d build: improve meson build (#1167)
Allows building the precompiled library as a shared library. This can be
toggled with the `default_library` meson option. Additionally I added
pkgconfig support and installation of the headers.
2025-06-03 08:07:20 -07:00
pre-commit-ci[bot]
4a4039d05c chore(deps): pre-commit.ci autoupdate (#1166)
<!--pre-commit.ci start-->
updates:
- [github.com/pre-commit/mirrors-clang-format: v20.1.4 →
v20.1.5](https://github.com/pre-commit/mirrors-clang-format/compare/v20.1.4...v20.1.5)
<!--pre-commit.ci end-->

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-29 04:56:00 -07:00
Philip Top
c4a6f31bd9 Tests (#1165)
Handle RTTI in a consistent way for locale inclusion for integral conversion.  
Resolve some missing code coverage lines.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alexander Galanin <agalanin@nvidia.com>
2025-05-26 10:35:22 -07:00