1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-05-01 05:03:52 +00:00

45 Commits

Author SHA1 Message Date
Philip Top
27da2f952e
Container options (#423)
* Update options.md book chapter and the readme to better reflect current usage and the modifications to the add_options templates.

add support in add_option for wrapper types, such as std::optional, boost::optional or other types with a value_type trait.  Add support for generalized containers beyond vector,  add support for nested tuples and vectors, and complex numbers directly in add_option.  This includes several new type traits and object categories.

Upgrade the google test version to better support templated tests.

add support for vector argument separator `%%`

* update formatting to match recent changes

* Apply suggestions from code review

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2020-03-22 14:06:34 -04:00
Henry Schreiner
0cc8806ec5 fixup! CMake updates from @slurps-mad-rips 2020-01-09 09:53:58 -05:00
Isabella Muerte
60e2932356 CMake updates from @slurps-mad-rips 2020-01-09 09:53:58 -05:00
Philip Top
c67ab9dd43 Config file handling refactor. (#362)
Refactor some of the configuration file handling code.  Make it easier to get the actual file that was processed, and allow extras in the config file to be ignored (default now), captured or errored.

fix std::error reference and formatting

add test for required but no default and fix a shadow warning on 'required' from gcc 4.8

Test correctness of config write-read loop

fix config generation for flag definitions

make the config output conform with toml

continue work on the config file interpretation and construction

get all the ini tests working again with the cleaned up features.

update formatting

rename IniTest to ConfigFileTest to better reflect actual tests and add a few more test of the configTOML
disambiguate enable/disable by default to an enumeration, and to make room for a configurable option to allow subcommands to be triggered by a config file.
add a ConfigBase class to generally reflect a broader class of configuration files formats of similar nature to INI files

add configurable to app and allow it to trigger subcommands

add test of ini formatting

add section support to the config files so sections can be opened and closed and the callbacks triggered as appropriate.

add handling of option groups to the config file output

add subcommand and option group configuration to config file output

subsubcom test on config files

fix a few sign comparison warnings and formatting

start working on the book edits for configuration and a few more tests

more test to check for subcommand close in config files

more tests for coverage

generalize section opening and closing

add more tests and some fixes for different configurations

yet more tests of different situations related to configuration files

test more paths for configuration file sections

remove some unused code and fix some codacy warnings

update readme with updates from configuration files

more book edits and README formatting

remove extra space

Apply suggestions from code review

Co-Authored-By: Henry Schreiner <HenrySchreinerIII@gmail.com>

fix some comments and documentation

fix spacing

Rename size_t -> std::size_t

Fix compiler warnings with -Wsign-conversion

Fix new warnings with -Wsign-conversion in PR
2019-12-31 11:28:25 -05:00
Henry Schreiner
3bdbbd7875
Adding CUDA NVCC build (#365)
* Adding CUDA build

* Filter NVCC warning

* Constexpr reword
2019-12-10 11:42:32 -05: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 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
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
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
Henry Schreiner
5e0bb1c8da
Fix Boost CMake (#226)
* Fixing typos in FindBoost

* Minimum required Boost is actually 1.61
2019-02-19 14:08:36 +01:00
Henry Schreiner
c9123811d1
CLI::IsMember (#222)
* Adding first draft of Sets

Use IsMember now

Using IsMember as backend for Set

Non-const validator backend

Move set tests to set

Clearer inits

* Drop shortcut

Tighten up classes a bit for MSVC

Check with GCC 4.8 too

* Simpler templates, but more of them

Dropping more type safety for older compilers

Shortcut string set

* Adding shortcut init

Making g++ 4.7 docker image happy

Fix Clang tidy issue with last commit

Adding one more shortcut, adding a couple of tests

* Dropping dual pointer versions of code

* Smarter shortcut syntax

* Adding slighly faster choices

* Cleanup to make InMember simpler

* Drop choices for now, adding some tests

* ValidationError is now always the error from a validator

* Support for other types of initializer lists, including enums

* Factor out type utilities, single version of IsMember code

* Adding a few tests for #224

* Minor cleanup for Validation Error

* Adding tests, moved deprecated tests

* Docs updates
2019-02-19 09:56:02 +01:00
Philip Top
7cd04e3b65 Fixes some cmake issues when using earlier cmake versions specifically Boost::boost is not defined before boost 3.5.2 so 3.4 doesn't work. also the AND condition for MSVC didn't work on older cmake 2019-01-31 19:05:55 +01:00
Henry Fredrick Schreiner
2c024401cc Minor touch up after #186 2019-01-06 10:46:12 +01:00
Philip Top
30c2e327d1 Add single string parsing (#186)
* add Tests and ability to handle program file inclusion in the single string.

add the ability to deal with a single string in the parse command and handle quoted string appropriately

* Add extra test cases for full coverage, clear up escape quote sequencing and handling of extra spaces
2019-01-06 10:30:49 +01:00
Henry Schreiner
73411e1e38
Minor build system improvements (#154) 2018-08-01 11:36:13 +02:00
Henry Fredrick Schreiner
f6e1b8d7aa Adding windows test 2018-07-06 10:54:56 +02:00
Henry Fredrick Schreiner
98b31d788b Adding tests and deprecation messages 2018-06-18 15:13:59 +02:00
Henry Fredrick Schreiner
89975e51e7 Updating coverage 2018-04-30 08:17:31 -04:00
Henry Fredrick Schreiner
952f2913e3 First attempt at formatter (app and option)
in progress: formatters

Getting closer

Working on apps

One test actually runs

All builds, added filter functions

Reverting a few behavours as needed

Repairs

All tests pass

Fixing error with adding help flag

Labels are simpler mappings, normalized setters

Adding help_all

Adding a few more tests

One more line tested

Adding one more check

Adding to readme

Simplify naming

Adding default constructors

Fixing spacing issues with subcommand all printout

Adding a couple of tests
2018-04-30 08:17:31 -04:00
Henry Schreiner
a061275eba
Moving to submodules, adding sanitizer (#111) 2018-04-25 18:57:21 -04:00
Henry Schreiner
2d6581a394 Boost Optional before 1.58 is too buggy to support 2018-04-18 18:11:11 -04:00
Henry Fredrick Schreiner
de06d50f34 Adding better boost testing on old compilers 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
20b7232c47 Fix for Windows MSVC 2017 and GoogleTest 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
17437921c0 Adding more informational printouts 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
39e777392d Adding informational printout to ctest 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
d2d4f07fd4 Dropping CLI_ in favor of CLI11_ everywhere 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
5c0d6617d5 Adding optional test 2018-04-04 18:29:32 +02:00
Henry Fredrick Schreiner
bea833bbcd Adding and fixing more warnings 2018-03-26 11:48:23 +02:00
Henry Fredrick Schreiner
8e87df2a6c Adding GTest improvments 2017-11-21 21:28:32 -05:00
Henry Fredrick Schreiner
774bb5d05f Cleaner IDE folder structure 2017-06-02 09:03:38 -04:00
Henry Fredrick Schreiner
9a526377ea Testing for duplicate symbol errors 2017-03-31 16:00:18 -04:00
Henry Fredrick Schreiner
ee9219e0f8 Adding warnings and fixes, CLI11 target, support for VIM Syntastic 2017-03-27 13:53:57 -04:00
Henry Fredrick Schreiner
480d8b38ae Adding test for adding new parser 2017-03-23 10:26:54 -04:00
Henry Fredrick Schreiner
a0b10b4c50 Adding timer 2017-03-22 10:40:00 -04:00
Henry Fredrick Schreiner
81f58c130a Fixing for IDE builds 2017-02-24 13:16:11 -05:00
Henry Fredrick Schreiner
e63898df9f Throw errors for duplicate subcommand names, with ignore case too 2017-02-20 15:31:58 -05:00
Henry Fredrick Schreiner
2b40b8cbd3 Removing automatic testing with single file, kept on travis 2017-02-14 12:26:07 -05:00
Henry Fredrick Schreiner
83eb7eb84b Splitting up tests 2017-02-12 16:18:53 -05:00
Henry Fredrick Schreiner
b774c57dc2 Adding help testing, option groups 2017-02-11 09:38:35 -05:00
Henry Fredrick Schreiner
aac712b754 Adding ini parser, cleanup test CMake 2017-02-09 17:18:24 -05:00
Henry Fredrick Schreiner
ee5678562f Adding tools to build with python 3.6 directly 2017-02-06 11:51:06 -05:00
Henry Fredrick Schreiner
4b0f6dbfd6 Nicer adding of tests 2017-01-27 10:26:52 -05:00
Henry Fredrick Schreiner
3eac26e2e1 Adding DownloadProject to cmake 2017-01-27 09:40:45 -05:00
Henry Fredrick Schreiner
1b2af21a2d Added more tests, some fixes 2017-01-26 17:09:56 -05:00
Henry Fredrick Schreiner
d070f32ed6 Adding cmake, tests 2017-01-26 16:48:30 -05:00