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";