power-sequencer: Replace Argument class with CLI11
Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I8f48a1fb18ed2c190c8292317e883b05754a5558
diff --git a/power-sequencer/main.cpp b/power-sequencer/main.cpp
index 72f96fb..6f1dca0 100644
--- a/power-sequencer/main.cpp
+++ b/power-sequencer/main.cpp
@@ -15,12 +15,12 @@
*/
#include "config.h"
-#include "argument.hpp"
#include "mihawk-cpld.hpp"
#include "pgood_monitor.hpp"
#include "runtime_monitor.hpp"
#include "ucd90160.hpp"
+#include <CLI/CLI.hpp>
#include <phosphor-logging/log.hpp>
#include <sdeventplus/event.hpp>
@@ -32,17 +32,31 @@
int main(int argc, char** argv)
{
- ArgumentParser args{argc, argv};
- auto action = args["action"];
+ CLI::App app{"Phosphor sequencer monitor"};
+ std::string action{};
+ std::string interVal{};
- if ((action != "pgood-monitor") && (action != "runtime-monitor"))
+ std::vector<std::string> actionTypes = {"pgood-monitor", "runtime-monitor"};
+ app.add_option("-a,--action", action,
+ "Action: pgood-monitor or runtime-monitor\n")
+ ->required()
+ ->transform(CLI::IsMember(actionTypes));
+ app.add_option("-i,--interval", interVal,
+ "Interval in milliseconds:\n"
+ "PGOOD monitor: time allowed for PGOOD to come up\n"
+ "Runtime monitor: polling interval.\n")
+ ->required();
+
+ try
{
- std::cerr << "Invalid action\n";
- args.usage(argv);
- exit(EXIT_FAILURE);
+ app.parse(argc, argv);
+ }
+ catch (CLI::Error& e)
+ {
+ return app.exit(e);
}
- auto i = strtoul(args["interval"].c_str(), nullptr, 10);
+ auto i = strtoul(interVal.c_str(), nullptr, 10);
if (i == 0)
{
std::cerr << "Invalid interval value\n";