1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-04-29 12:13:52 +00:00

64 Commits

Author SHA1 Message Date
Josh Soref
51a0efcbbc
Spelling (#429)
* spelling: argument

* spelling: conflicts

* spelling: correctly

* spelling: default

* spelling: description

* spelling: empty

* spelling: enum

* spelling: javascript

* spelling: modifying

* spelling: nonexistent

* spelling: plumbum

* spelling: programmatically

* spelling: received

* spelling: replaced

* spelling: required

* spelling: sanitizers

* spelling: semicolon

* spelling: source

* spelling: subcommands

* spelling: successful
2020-02-12 00:41:58 -05:00
Christoph Bachhuber
34bfa38691
Add copyright and copyright check (#424)
* Add copyright check

* Remove old license message

* Implement suggestions from code review
2020-02-10 14:28:47 -05:00
Christoph Bachhuber
88b0bc4d95 Add include_what_you_use to cpplint checks (#414)
* Add build/include_what_you_use to cpplint checks

* Fix all cpplint build/include_what_you_use issues
2020-01-26 14:01:54 -06:00
Christoph Bachhuber
ffe5b29e1f Add cstdint and std::prefix to its symbols (#409)
* Add cstdint and std::prefix to its symbols

* Use int64_t in std::
2020-01-21 18:24:40 -06:00
Henry Schreiner
dd0d8e4fe7
Bump version to 1.9.0 (#408)
* Bump version to 1.9.0

* Include CMake mention
2020-01-19 17:00:53 -06:00
Christoph Bachhuber
b856c0ba9c Add cpplint to CI (#400)
* Add cpplint config file

* Add cpplint to CI

* Add checks

* Add docker container tag

* Unindent container

As suggested in code review

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

* Fix cpplint issues

* Fix clang-format

* Include and fix modern cpplint runtime/int

* Include and fix cpplint build/include_order

* Revert "Include and fix cpplint build/include_order"

This reverts commit bddb6a2d6744c5397f387ccd03416a1ec5e29862.

* Update explanation, sort alphabetically

* Implement suggestion from code review

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

* Include cstdint header, prefix its symbols with std::

* Forgot std::

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2020-01-18 08:53:45 -05:00
Henry Schreiner
4b3a6b6214
Add std checking and try to fix filesystem being used on macOS 10.14 (#397)
* Add std checking and try to fix filesystem being used on macOS 10.14

* Adding extra check recommeded by @phlptp

* suppress  the double to int warning in msvc 2019 in the optional test

Co-authored-by: Philip Top <top1@llnl.gov>
2020-01-09 13:48:19 -05:00
Henry Schreiner
8570ffb564
Check for switch enum (#393)
* Check for switch enum

* Add missing cases
2020-01-08 10:17:36 -05:00
Henry Schreiner
5d07c46efe Adding google-explicit-constructor fixes
Used '-DCLI11_CLANG_TIDY=ON -DCLI11_CLANG_TIDY_OPTIONS=-fix;-checks=google-explicit-constructor"'
2020-01-06 14:16:36 -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
d5cd986046 Rename size_t -> std::size_t 2019-12-31 10:35:24 -05:00
Christoph Bachhuber
d9379cccf5 Clang-tidy fixes (#360)
* Clang-tidy fixes

* Format

* Satisfy pre-commit hooks

* Fix getters to constref return

* Final name getter as constref
2019-12-04 21:17:06 -05:00
Henry Fredrick Schreiner
2244ecc3f3 Adding and fixing Weffc++ 2019-11-29 21:49:05 -05:00
Philip Top
5f696596d7 fix some warnings generated from klocwork static analyzer (#350)
* fix some warnings generated from klocwork static analyzer

* Some more visual studio static analyzer and clang-tidy fixes

* some formatting updates
2019-11-29 08:54:32 -05:00
Philip Top
d621658e6d Issue #339 (#348)
* add an example where the name of the enum is printed through a stream output function, which subverted the checkTransformer conversion and prevented conversion of the enumeration.

* add missing 'typename'

* try a simpler version of the value_string using const reference for all overloads

* use auto return type to match to_string return type in value_string

* remove extra spaces
2019-11-29 08:52:09 -05:00
christos
51a395ec9f Handle float type in positive number (CLIUtils#328) (#342)
* fix https://github.com/CLIUtils/CLI11/issues/328

 * use same assumptions about the size (ie double is enough) as in Number validator

* fix spelling in error message

* fix class description comment

* PositiveNumber accepts now >0 while NonNegative >=0

* update README for PositiveNumber and NonNegativeNumber

* spelling
2019-11-25 14:52:37 -05:00
Philip Top
a8d597dae4 Filedir checks (#341)
* add checks for files and directories so the code can be used in the config check

* add use of std::filesystem when available

* add some documentation

* try a verbatim section

* update formatting on validators

* update error call to use FileError::Missing

* add FileError test for invalid file

* format tweak
2019-11-25 14:50:25 -05:00
Philip Top
418b7175f5 Type size refactor (#325)
* add expanded type_size specification

* add some more checks for type_size_max

* continued work on getting type sizes more flexible

* make some more tweaks to option to split up validate and reduce sections

* git rid of exceptions on the type_size functions exceptions,  allow any number to be entered for the min and max and don't make a distinction between flags and other types.

* add expected count

* add the allow extra args flag in an option

* start working in allow_extra_args

* write some stuff in the book,  and continue working on the failing test cases

* fix a few more of the helpers tests

* a few more test cases running

* all tests pass, fixing calls in ini files

* get vector<pair> working and all tests passing

* change callback to use reference to remove allocation and copy operation

* add support and test for vector<vector<X>>

* change Validators_ to validators_ for consistency

* fix linux warnings and errors by reording some templates and adding some typename keywords

* add support for std::vector<X> as the cross conversion type so optional<std::vector<X>> is supported using the full template of add_option.

* a few more test cases to take care of some coverage gaps

* add missing parenthesis

* add some more tests for coverage gaps

* add test for flag like option

* add transform test for `as<X>` function and make it pass through the defaults

* add a few more tests and have vector default string interpreted correctly.

* add test for defaulted integer,  and route default string for defaulted value which would otherwise be empty

* some code cleanup and comments and few more test coverage gap tests

* add more tests and fix a few bugs on the type size and different code paths

* remove path in results by fixing the clear of options so they go back to parsing state.

* get coverage back to 100%

* clang_tidy, and codacy fixes

* reorder the lexical_conversion definitions

* update some formatting

* update whitespace on book chapter
2019-11-10 05:36:16 +10:30
Henry Fredrick Schreiner
fda6126d7c Adding pre-commit 2019-10-24 19:07:01 -04:00
fpeng1985
09c169c2d9 refine the implementation of has_find type_traits (#319)
* refine the implementation of has_find type_traits

* Format fix
2019-09-18 14:24:24 -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
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
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
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
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
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
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
571fb07cfb Add a ! operator to Validators for checking a false condition (#230) 2019-02-20 19:15:34 +01:00
Henry Schreiner
17d05b000c
Adding map support to IsMember (#228)
* Adding first draft of mapping

* IsMember now supports maps

* Adding example, better Val combs, and cleanup

* Reversing order of map, adding pair support

* Check/Transform suppport for Validators

* Adding enum tools from @phlptp, more tests
2019-02-20 17:17:51 +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
3d7de7d25c Add documentation for positionals_at_end documentation clarification on some of the validators (#223)
Add a flag that specifies that positional options can only occur as the last arguments of a command line.  Will generate an ExtrasError if all positional arguments are not captured, regardless of the state of allow_extras.
2019-02-12 09:43:41 +01:00
Henry Fredrick Schreiner
23802ea123 Fix some text from last PR 2019-02-01 09:58:05 +01:00
Rafi Wiener
d3c3a4c58f add validator for ip address and positive number 2019-02-01 00:43:26 +01:00
Philip Top
ce6dc0723e add options to handle windows style command line options (#187)
* add some fields and functions for windows like options
add test cases for windows options and refactor for additional string functions

* try to fix code coverage to 100% again.  add some additional documentation and a few additional test cases to verify documentation

* remove some extra brackets
2019-01-10 23:07:17 +01:00
Henry Fredrick Schreiner
20c304fa01 Adding more documentation to fix some warnings 2018-07-01 10:21:22 +02:00
Henry Fredrick Schreiner
101d847c29 Use filter fn to simplify, sort includes 2018-05-06 18:36:33 +02:00
Henry Fredrick Schreiner
3ff6fcae4e Dropping unneeded static keywords 2018-05-04 16:25:16 +02:00
Henry Fredrick Schreiner
2b6b62c52c Adding smart validators 2018-05-03 17:04:13 +02:00
Lucas Czech
7868dc9f6c Add path exists validator. 2018-01-07 22:35:01 +01:00
Henry Fredrick Schreiner
85857d99e1 Return string for error message in validators 2017-11-24 21:11:28 -05:00
Henry Fredrick Schreiner
038eafed29 Adding test and keeping validator API similar 2017-11-24 21:11:28 -05:00
Henry Fredrick Schreiner
3006f82bf6 Making validators run before and with a reference 2017-11-24 21:11:28 -05:00
Henry Fredrick Schreiner
916cde58cf BSD licence, preparing for 1.0 release 2017-06-01 09:23:04 -04:00
Henry Fredrick Schreiner
27f718125d Reformat with clang-format 2017-05-31 12:03:05 -04:00
Henry Fredrick Schreiner
f24561f460 Explicit casts 2017-05-31 11:28:46 -04:00
Henry Fredrick Schreiner
60934c8a27 Fixing include order 2017-05-31 10:59:25 -04:00
Henry Fredrick Schreiner
c94aa406a6 Fixing namespace endings 2017-05-31 10:50:16 -04:00