From 51f32113c05000f41fdb0796b435ce680cfe46a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Sun, 10 Mar 2024 12:31:13 +0100 Subject: [PATCH] Add model argument validation in b_best --- src/best/b_best.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/best/b_best.cc b/src/best/b_best.cc index 9ca4370..68576f8 100644 --- a/src/best/b_best.cc +++ b/src/best/b_best.cc @@ -1,5 +1,7 @@ #include #include +#include "main/Models.h" +#include "main/modelRegister.h" #include "common/Paths.h" #include "common/Colors.h" #include "BestResults.h" @@ -7,7 +9,18 @@ void manageArguments(argparse::ArgumentParser& program) { - program.add_argument("-m", "--model").default_value("").help("Filter results of the selected model) (any for all models)"); + program.add_argument("-m", "--model") + .help("Model to use: " + platform::Models::instance()->toString() + " or any") + .action([](const std::string& value) { + std::vector valid(platform::Models::instance()->getNames()); + valid.push_back("any"); + static const std::vector choices = valid; + if (find(choices.begin(), choices.end(), value) != choices.end()) { + return value; + } + throw std::runtime_error("Model must be one of " + platform::Models::instance()->toString() + " or any"); + } + ); program.add_argument("-d", "--dataset").default_value("any").help("Filter results of the selected model) (any for all datasets)"); program.add_argument("-s", "--score").default_value("accuracy").help("Filter results of the score name supplied"); program.add_argument("--friedman").help("Friedman test").default_value(false).implicit_value(true);