mirror of
https://github.com/CLIUtils/CLI11.git
synced 2026-01-19 04:52:08 +00:00
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>
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
// Copyright (c) 2017-2025, University of Cincinnati, developed by Henry Schreiner
|
|
// under NSF AWARD 1414736 and by the respective contributors.
|
|
// All rights reserved.
|
|
//
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
#include <CLI/CLI.hpp>
|
|
#include <ctime>
|
|
#include <iomanip>
|
|
#include <iostream>
|
|
#include <sstream>
|
|
#include <string>
|
|
|
|
// Custom validator is an alias of Validator, the constructor takes a function that takes as input and returns a string
|
|
const CLI::CustomValidator ISO8601(
|
|
[](std::string &input) {
|
|
std::tm tm = {};
|
|
std::istringstream ss(input);
|
|
|
|
ss >> std::get_time(&tm, "%Y-%m-%dT%H:%M:%S");
|
|
if(ss.fail()) {
|
|
return std::string("Failed to parse time string");
|
|
}
|
|
return std::string{};
|
|
},
|
|
"datetime[%Y-%m-%dT%H:%M:%S]");
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
CLI::App app("custom validator testing");
|
|
|
|
std::string value;
|
|
app.add_option("--time", value, "enter a date in iso8601 format")->check(ISO8601)->required();
|
|
|
|
CLI11_PARSE(app, argc, argv);
|
|
|
|
std::cout << "date given = " << value << '\n';
|
|
|
|
return 0;
|
|
}
|