1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-04-30 04:33:53 +00:00

943 Commits

Author SHA1 Message Date
Henry Schreiner
4660788c6f Fix token 2019-09-06 15:41:45 -04:00
Henry Schreiner
efb99b97b3
Tutorial book (#318)
* Clean up book merge

* Book building in place
2019-09-06 15:20:16 -04:00
Henry Schreiner
4917b8b763
Moving tutorial docs (#304) 2019-09-06 14:25:27 -04:00
Philip Top
cf4933db91 Third stage callback (#313)
* fix signed mismatch

add test from readme about callbacks

update callback documentation,

add a subbcommand immediate_callback test

add third callback and readme update

* a few more updates to the readme on `immediate_callback`

* Apply suggestions from code review

Co-Authored-By: Henry Schreiner <HenrySchreinerIII@gmail.com>
2019-09-03 22:46:13 -04:00
Henry Schreiner
a145458622
Missing include reported by @andreca (#315) 2019-09-03 11:30:28 -04:00
Philip Top
fc6e1c7a43 add const version of validator modifiers 2019-09-02 20:58:26 -04:00
Philip Top
67c441b527 add separate condition for index into vectors
remove restrictions on tuple size, and add some additional tests and modified documentation

fix some issues with the negative number check

add some test for indexed validation on tuple

allow specific validators for specific elements in a type with multiple values, or to just apply to the last given argument
2019-09-02 20:58:26 -04:00
Philip Top
06ab2d0fbd Footer callback (#309)
fix incorrect parenthesis

update some clang-tidy fixes mainly else after return but a few conversions from into to bool

add extra newline before footer

add an extra field to the extra Error

add a footer callback for help operations
2019-08-18 19:51:14 -04:00
Philip Top
127f5388ab Support tuple (#307)
* add some tests with default capture on the two parameter template and some notes about it in the README.md

remove the test from visual studio 2015
vs2015 doesn't seem to properly deal with is_assignable in the cases we care about so make a standalone version that is more direct in what we are doing

add version to appveyor and add some notes to the readme

fix a few test cases to make sure code is covered and test a few other paths

remove unneeded enum streaming operator

add some diagnostic escapes around trait code to eliminate gcc Wnarrowing warnings

work specification of the template operations

remove optional add some templates for options conversions

add the two parameter template for add_option

* Fix some comments from Code review and add more description

* start work on trying to clean up the type traits for which lexical cast overload to use

* fix readme issue and make the condition tests a little clearer

* add a check for out of range errors on boolean conversions

* Fix capitalization and some comments on option functions

* Allow immediate_callback on the main app to run the main app callback prior to named subcommand callbacks, and reflect this change in the a new test and docs.

* add a is_tuple_like trait, and type_count structure for getting the number of elements to require

* add lexical conversion functions for tuples and other types

* remove the separate vector option and option function

* test out the type names for tuples

* add some more lexical conversion functions and test

* more work on tuples and tests

* fix some merge warnings

* fix some typename usage and c++14 only constructs

* tweak some of the template to remove undefined references

* add extra static assert about is_tuple_like

* fix some undefined references in clang

* move around some of the type_count templates to be used in the type_name functions

* move the type_count around and add some additional checks on the classification

* add some info to the readme
2019-08-16 09:58:15 -04:00
Philip Top
4bfce43795 required positional arguments and a vector positionals (#306)
* add a check loop for missing required positional, when the number of arguments get small.

* fix a few warnings on signed/unsigned checks

* add check for a required positional vector.
2019-08-07 10:52:58 -04:00
Henry Fredrick Schreiner
eb6f759f51 Update changelog 2019-07-30 23:07:52 -04:00
Philip Top
17ddce2fb2 Add classification type traits (#286)
This cleans up the type checking a bit and makes it more readable, along with some other cleanup.

* start work on trying to clean up the type traits for which lexical cast overload to use

* fix readme issue and make the condition tests a little clearer

* add a check for out of range errors on boolean conversions

* Fix capitalization and some comments on option functions

* fix a few code analysis warnings for VS2019
2019-07-30 09:46:10 -04:00
Philip Top
ba7aac9c8a remove undefined bahavior (#290)
* change the checked_multiply function to not use undefined behavior to check for potential undefined behavior and wrapping.

* update the checked_multiply template to deal with mismatched sign in signed numbers and min val correctly.  This involved adding to templates to clear up warnings
2019-07-29 00:20:37 -04:00
Philip Top
eab92ed988 modified option template (#285)
* add some tests with default capture on the two parameter template and some notes about it in the README.md

remove the test from visual studio 2015
vs2015 doesn't seem to properly deal with is_assignable in the cases we care about so make a standalone version that is more direct in what we are doing

add version to appveyor and add some notes to the readme

fix a few test cases to make sure code is covered and test a few other paths

remove unneeded enum streaming operator

add some diagnostic escapes around trait code to eliminate gcc Wnarrowing warnings

work specification of the template operations

remove optional add some templates for options conversions

add the two parameter template for add_option

* Fix some comments from Code review and add more description

* fix case when string_view doesn't work to append to a string.

* This PR also addressed #300

* modify lexical_cast to take  const std::string &, instead of by value to allow string_view in a few cases
2019-07-29 00:19:35 -04:00
Daniel Mensinger
dbd4933506 meson: Basic meson support (#299)
* meson: Basic meson support

With this patch, CLI11 can be used as a meson
subproject: http://mesonbuild.com/Subprojects.html

However, CMake is still required for testing and
installation. The current meson.build is not a
complete replacement.

* meson: Added meson test

* Adding Azure test
2019-07-25 17:26:13 -04:00
Henry Schreiner
f583e5baf6
Fix #298, resetting config option (#301) 2019-07-25 16:16:11 -04:00
Daniel Mensinger
821940c368 Update README.md (#302)
Fixed typo
2019-07-25 16:14:56 -04:00
Peter Azmanov
f0c0794aa7 Fix std::string_view support in transforming validators (#300)
* Fix std::string_view support in transforming validators

* Fix single header

* Fix formatting

* Be more careful

* fix string_view test
2019-07-25 16:14:32 -04:00
Philip Top
68c8b1b789 Allow immediate_callback on the main app (#292)
* Allow immediate_callback on the main app to run the main app callback prior to named subcommand callbacks, and reflect this change in the a new test and docs.

* Update README.md

Co-Authored-By: Henry Schreiner <HenrySchreinerIII@gmail.com>
2019-07-25 13:03:19 -04:00
Henry Schreiner
e6aca64d6f
Upgrade googletest, drop GCC 4.7 (#160) 2019-07-25 11:09:17 -04:00
Henry Schreiner
73aa158d38
Wandbox now shows better 1.8 style code 2019-05-21 12:21:47 +02:00
Henry Schreiner
d23c1e7408
Update wandbox for 1.8 2019-05-21 12:18:50 +02:00
Henry Schreiner
13becaddb6
Version 1.8 (#280)
* Version bump

* Update README

* Apply suggestions from code review

Co-Authored-By: Philip Top <top1@llnl.gov>

* Adding mark for deprecated items
v1.8.0
2019-05-20 14:23:11 +02:00
Henry Schreiner
7b315782e1
Warnings (#281)
* Fixing some warnings

* Make gtest a system library

* Fixing format

* Adding better method for adding warnings

* Nicer Windows deprecated test

* JSON update and drop testing timer

* Warnings as errors everywhere
2019-05-18 19:11:27 +02:00
Henry Fredrick Schreiner
acee69a8cc Update changelog and contributers
[skip ci]
2019-05-18 06:40:10 +02:00
Viacheslav Kroilov
59a36565fe Support for size values (640 KB) and numbers with unit in general (#253)
* [WIP] Initial implementation

* Add mapping validation

* More documentation

* Add support for floats in checked_multiply and add tests

* Place SuffixedNumber declaration correctly

* Add tests

* Refactor SuffixedNumber

* Add as size value

* Update README

* SFINAE for checked_multiply()

* Mark ctors as explicit

* Small fixes

* Clang format

* Clang format

* Adding GCC 4.7 support

* Rename SuffixedNumber to AsNumberWithUnit
2019-05-18 06:22:17 +02:00
Henry Schreiner
b6e3fb126a
Boost optional is no longer automatic (#279)
* Boost optional is no longer automatic

* Tighten up optional a bit

* Check times
2019-05-16 23:34:29 +02:00
Henry Schreiner
10e4b0784b
Adding CTest output (#278) 2019-05-16 17:24:05 +02:00
Henry Schreiner
433fd91212
Build testing (#277)
* build-testing better supported

* Add formatting to Azure

* Adding more jobs to Azure

* Control

* Allow libc++ to be used on linux

* Fix modernize message

* Fix variable

* fixup! Fix modernize message

* Drop auto exp. optional

* Update readme, better user id in docker

* Fix BUILD_TESTING

* Drop format from travis, leave tidy for now

* Check tidy and format

* Tidy fully on Azure now
2019-05-14 15:33:15 +02:00
Henry Schreiner
0be526e247
Adding argparse mention
See nothings/single_file_libs#150
2019-05-04 13:56:13 +02:00
Philip Top
f6351b62a7 Readme examples description (#271)
* Start adding a description of the various examples to the README

* add an examples segment to the readme describing the different examples

* add a reserve operation when constructing vector from argc and argv
2019-05-03 22:22:18 +02:00
Henry Schreiner
d81843002a
To string and default option revamp (#242)
* First streaming version

* Using to_string instead

* Switching to new backend

* Moving to capture function for defaults

* Rename capture_default + _str

* defaultval -> default_str, added always_capture_default

* Fix style

* Adding tests and docs to readme

* Dropping macOS on Travis (supported through Azure)
2019-04-28 22:44:30 +02:00
elszon
ca4bc6a6fc Aligment in multiline description (#269) 2019-04-28 16:22:36 +02:00
Philip Top
b1036a1ad0 add a function to get the remaining arguments in a valid order (#265)
* add a function to get the remaining arguments in a valid order for parse.  and add rvalue reference overloads for parse and _parse so args is not refilled if not needed.

* check a few more tests and verify ExtrasError works on parse(rValue vector)

remove impossible to reach branches in _parse function

* add callback_passthrough example and tests
2019-04-28 16:20:52 +02:00
ryan4729
734af661c6 fix tests on aarch64 (#266)
* fix tests on aarch64
2019-04-18 15:00:11 +02:00
Philip Top
76d2cde656 Positional argument checks (#262)
* some tweaks with optional

* remove set_results function that was bypassing some of the result processing in some cases of config files.

* add positional Validator example and tests add CLI::Number validator.

* add positional Validator example and tests add CLI::Number validator.

* do some reformatting for style checks and remove auto in test lambda.
2019-04-11 12:04:30 +02:00
Philip Top
a1c18e058a Do a little cleanup on the readme. (#259) 2019-04-03 13:17:57 +02:00
Andrew Hardin
6be9f0c659 Resolve two switch related warnings on GCC 8 (#255)
* Add default case to resolve -Werror=switch-default.

* Add missing enumeration values to resolve -Werror=switch-enum.

* Fix coverage
2019-03-22 19:48:00 -04:00
Paul le Roux
80420d62e2 Make ConfigVersion arch independent (#254)
CLI11 is header only and the architecture shouldn't matter. The arch
dependence has the potential to cause find_package to fail incorrectly.
2019-03-22 17:57:46 -04:00
Philip Top
49e93cac3c add docs for remove_subcommand and add_subcommand in option_group
add some test of the remove_excludes functions

add test for Issue #256

add remove_subcommand fail test

add remove_subcommand function and add_subcommand to option_group and some tests associated with them.
2019-03-22 17:56:36 -04:00
Philip Top
059f6ef254 change add_option_function to take a std::function with void return type and update some corresponding test cases and documentation
Allow option groups to use ignore_case ignore_underscore for inheritance

Allow option groups to specify allow_extras even if the parent app doesn't in which case extra options flow down into the option_group.
2019-03-22 17:56:36 -04:00
Philip Top
3f9fafd916 make immediate_callback inheritable, add tests for that and for valid strings, some cleanup in the README.md
Apply suggestions from code review

Co-Authored-By: phlptp <top1@llnl.gov>
allow callbacks for option_groups, and allow some other characters as flags
2019-03-22 17:56:36 -04:00
Philip Top
6ad2641d63 Add excludes test on option_groups 2019-03-22 17:56:36 -04:00
Philip Top
fe7e84f29a add some unit tests for the fallthrough_parent command
rework return values from _parse_* function to return true if the value was processed false otherwise, this simplified the logic and got rid of the pulling and clearing of the missing fields from option groups.

add TriggerOff and TriggerOn helper functions and some tests for them

add shapes example of multiple callbacks in order.

allow specification of callbacks that get executed immediately on completion of parsing of subcommand

add tests for enabled/disabled by default

add _get_fallthrough_parent.  To get the most appropriate parent to fallthrough to

add enabled and disabled by default functions

add positional_arity example

Add a pre_parse_callback_ for apps.  The Pre parse callback takes an argument for the number of remaining arguments left to process, and will execute prior to parsing for subcommands, and after the first option parse for option_groups.
2019-03-22 17:56:36 -04:00
Henry Fredrick Schreiner
be8a08f25d Clean up warnings 2019-03-03 16:53:03 +01:00
Philip Top
2cd58ef8cf add a test of duplicate named subcommands in different option_groups and make sure that executes them over running the same one twice. (#247)
make duplicate subcommands work
2019-03-03 16:46:32 +01:00
Rafi Wiener
b8ebce759d Fix Error when compiling with gcc with -Wparentheses-equality (#248)
Signed-off-by: Rafi Wiener <rafiw@mellanox.com>
2019-03-03 12:38:09 +01:00
Philip Top
e9934e058d add transformer and checkedTransformer (#239)
* add transform and checkedTransform tests

add Transformer and CheckedTransformer validators

* Eliminate the Validator description string, some code cleanup

add tests

Make Validators a full Object and remove friend,  move to descriptions instead of overriding type name.

update validators to actually merge the type strings and use all validators in the type outputs

rework join so it works without the start variable,  allow some forwarding references in the validator types, some tests for non-copyable maps, and transforms

merge the search function and enable use of member search function,  make the pair adapters forwarding instead of copying

* add a few more tests and documentation

fix some gcc 4.7 issues and add a few more test cases and more parts of the README

Work on ReadMe and add Bound validator to clamp values

* updates to README.md

* Add some more in TOC of README and fix style in Option.hpp
2019-03-02 12:24:26 +01:00
Philip Top
6aa546fc42 merge upstream App (#246)
Make sure that nameless subcommands can handle subcommands and that App will treat subcommands in a group nearly the same as if they were in the in the app to begin with.
2019-03-02 12:14:58 +01:00
Philip Top
0631189b4d Option groups (#227)
* change the move function to _move_option and add an additional test

add a validation check on min options to make sure it is even possible to succeed.

add some additional tests to cover code paths and potential errors.

add a number of additional tests and checks and fix some issues with the add function in option_groups

clean up example and help formatting

add option_groups example to play with

move create_option_group to a member function using a dummy template

add some optionGroup tests

add min and max options calls and an associated Error call

* add ranges example,  add excludes to app for options and subcommands.

* add some tests on ranges, and some subcommand tests with exclusion

* add tests in optionGroups for some invalid inputs

* add required option to subcommands and option_groups

* add disabled flag

* add disable option to subcommands and some more tests

* start work on ReadMe modifications

* update the readme with descriptions of function and methods added for option_groups

* clear up gcc 4.7 warnings

* some update to the Readme and a few more warnings fixed

* Minor readme touchup
2019-03-01 17:43:08 +01:00