tools: nfdc status commands

refs #3780

Change-Id: I5222aacc0a7134978e9496c68a3b915dac4aee18
diff --git a/tools/nfdc/available-commands.cpp b/tools/nfdc/available-commands.cpp
index 3cd540a..23d55e3 100644
--- a/tools/nfdc/available-commands.cpp
+++ b/tools/nfdc/available-commands.cpp
@@ -25,78 +25,20 @@
 
 #include "available-commands.hpp"
 #include "help.hpp"
-#include "status-report.hpp"
-#include "status-main.hpp"
+#include "status.hpp"
+#include "legacy-status.hpp"
 #include "legacy-nfdc.hpp"
 
 namespace nfd {
 namespace tools {
 namespace nfdc {
 
-static int
-statusReport(ExecuteContext& ctx)
-{
-  ReportFormat fmt = ctx.args.get<ReportFormat>("format", ReportFormat::TEXT);
-  switch (fmt) {
-    case ReportFormat::XML:
-      return statusMain(std::vector<std::string>{"-x"}, ctx.face, ctx.keyChain);
-    case ReportFormat::TEXT:
-      return statusMain(std::vector<std::string>{}, ctx.face, ctx.keyChain);
-  }
-  BOOST_ASSERT(false);
-  return 1;
-}
-
-static int
-statusList(ExecuteContext& ctx, const std::string& option)
-{
-  return statusMain(std::vector<std::string>{option}, ctx.face, ctx.keyChain);
-}
-
-static int
-legacyNfdStatus(ExecuteContext& ctx)
-{
-  auto args = ctx.args.get<std::vector<std::string>>("args");
-  return statusMain(args, ctx.face, ctx.keyChain);
-}
-
 void
 registerCommands(CommandParser& parser)
 {
   registerHelpCommand(parser);
-
-  CommandDefinition defStatusReport("status", "report");
-  defStatusReport
-    .setTitle("print NFD status report")
-    .addArg("format", ArgValueType::REPORT_FORMAT, Required::NO, Positional::YES);
-  parser.addCommand(defStatusReport, &statusReport);
-
-  struct StatusCommandDefinition
-  {
-    std::string noun;
-    std::string verb;
-    std::string legacyOption;
-    std::string title;
-  };
-  const std::vector<StatusCommandDefinition> statusCommands{
-    {"status", "show", "-v", "print general status"},
-    {"face", "list", "-f", "print face list"},
-    {"channel", "list", "-c", "print channel list"},
-    {"strategy", "list", "-s", "print strategy choices"},
-    {"fib", "list", "-b", "print FIB entries"},
-    {"route", "list", "-r", "print RIB routes"}
-  };
-  for (const StatusCommandDefinition& scd : statusCommands) {
-    CommandDefinition def(scd.noun, scd.verb);
-    def.setTitle(scd.title);
-    parser.addCommand(def, bind(&statusList, _1, scd.legacyOption));
-  }
-  parser.addAlias("status", "show", "list");
-
-  CommandDefinition defLegacyNfdStatus("legacy-nfd-status", "");
-  defLegacyNfdStatus
-    .addArg("args", ArgValueType::ANY, Required::NO, Positional::YES);
-  parser.addCommand(defLegacyNfdStatus, &legacyNfdStatus, AVAILABLE_IN_ALL & ~AVAILABLE_IN_HELP);
+  registerStatusCommands(parser);
+  registerLegacyStatusCommand(parser);
 
   struct LegacyNfdcCommandDefinition
   {