* Add a dedicated version option to CLI11 to facilitate use of version flags, similar to help flags
* add some test for the version flag
* update errors and formatting
* clear up gcc 4.8 warnings
* add a few more tests
* fix compiler error
* fix a few comments, and change default version flag to only use "--version"
* remove `version` calls and tests
* formatting and add `std::string version()` back in.
* try clang 10
* use helics-builder clang 10 image
* try new image
* try again
* try different flag addition
* try adding cpp20 to visual studio check
* try with the latest flag enabled for visual studio 2019
* try the correct c++ flag
* remove use of std::result_of
* format files
* add windows latest and gcc 8 builds to azure
* try adding pr trigger
* try adding something specific for gcc 8
* use interface instead of public
* try C++17 on clang 8
* update the readme with some additional notes about gcc 8
* fix some incorrect doxygen comment formatting
* try using the glibcxx_release value
* debug some code paths to make sure macros are working
* Update readme and fix formatting.
* update formatting for Validators
* 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>
* add a get_single_name function for options, and allow short names to be used for configuration output.
* add config input to handle short and positional options
* add some tests about short options and positional options in config files
* allow use of envname_ in config files
* update doc book and readme with fixes
* formatting update
* some formatting updates
* add some notes on the config file generation
* just try modifying a comment
* Add whitespace/comments check
* Adapt spacing in clang-format
* Fix cpplint whitespace/comments issues
* Grammar
* Do not use clang-format for comment spacing
* Fix with clang-format pre-commit hook
* add a variant of the string conversions for the default string operations. Discriminate between the is_convertible and is_constructible type traits for object.
* update the test to test the different situations with the funny string like type
* 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>
* 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>
* Make CI fail with readability-container-size-empty flag
* Make CI fail with cppcoreguidelines-owning-memory flag
* Add all google checks, exclude specific ones
* Apply clang-tidy fixes
* Make timer constructors explicit
* Add check for unscoped namespaces
* Replace unscoped namespace by using-declaration
* Replace unscoped namespace by using-declaration
* Fix invalid callback calls for default_val Option function. the update adds a flag variable to control it, makes default_val exception safe and a template to convert from actual value types.
* update readme and fix some compilation issues on older compilers
* revert README.md with mistake erasures
* Update README.md
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
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
* Bug fix for issue 369. The default_val call was not resetting the option state after it had executed the callback and reset the results vector, allowing the possibility of an empty results getting passed to some conversions functions.
* add the source and attribution of the new test
* update formatting
* add ability to specify deprecated or retired options.
* add retired example and tests
* update some formatting and a few more test executions
* fix formatting on retired.cpp
* add another test to fill coverage gap for existing options that are being retired.
* add example comments
* Update readme with the descriptions of the new helper functions
* fix space on readme
* Apply suggestions from code review
Co-Authored-By: Christoph Bachhuber <cbachhuber89@gmail.com>
* add some flags to the code coverage report and update some names and add more descriptions to deprecated options
* update formatting on App
* allow transform to work with arrays. The element_type trait required pointer_traits<T> to be defined for the type which it was for vector but not for array due to decay rules in C++, even though it was not used. So Element type had to be split into two templates instead of a conditional.
* fix formatting
* clean up array initialization
* add constexpr array test
* add extra braces to make clang happy
* 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
* 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
* 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
* 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
* add a needs method to the app/subcommand
* add some needs subcommand tests
* add a few more subcommand tests for needs and alias
* fix shadow warnings
* add some tests of the error pathways and fix a few anomalous conditions on the Option excludes function
* add needs and alias functions in the readme
* add some tests of ignore_case and underscore with the alias operations
* add a few more test cases for needs option groups
* add callback tests with needs and add a few comments in the readme
* update formatting
* add error checks on the aliases and restrictions on valid names for subcommands and aliases
* add checks for matching subcommands and improve error return values to include the offending name
* add some tests of the alias errors
* add some more tests to check subcommand name matching during addition
* add some additional tests and remove a redundant chunk of codes
* add some more checks of subcommand name overlap in option_groups
* allow disabled subcommand to bypass name matching check
* 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>