tools/nfdc/main.cpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
26 #include "available-commands.hpp"
27 #include "legacy-nfdc.hpp"
28 #include "core/version.hpp"
29 
30 namespace nfd {
31 namespace tools {
32 namespace nfdc {
33 
34 static int
35 main(int argc, char** argv)
36 {
37  std::vector<std::string> args(argv + 1, argv + argc);
38 
39  if (args.empty() || args[0] == "-h") {
41  return 0;
42  }
43 
44  if (args[0] == "-V") {
45  std::cout << NFD_VERSION_BUILD_STRING << std::endl;
46  return 0;
47  }
48 
49  CommandParser parser;
50  registerCommands(parser);
51  std::string noun, verb;
53  ExecuteCommand execute;
54  try {
55  std::tie(noun, verb, ca, execute) = parser.parse(args, ParseMode::ONE_SHOT);
56  }
57  catch (const std::invalid_argument& e) {
58  std::cerr << e.what() << std::endl;
59  return 2;
60  }
61 
62  try {
63  ndn::Face face;
64  ndn::KeyChain keyChain;
65  ExecuteContext ctx{noun, verb, ca, face, keyChain};
66  return execute(ctx);
67  }
68  catch (const std::exception& e) {
69  std::cerr << e.what() << std::endl;
70  return 1;
71  }
72 }
73 
74 } // namespace nfdc
75 } // namespace tools
76 } // namespace nfd
77 
78 int
79 main(int argc, char** argv)
80 {
81  return nfd::tools::nfdc::main(argc, argv);
82 }
static int main(int argc, char **argv)
context for command execution
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
Definition: algorithm.hpp:32
contains named command arguments
std::function< int(ExecuteContext &ctx)> ExecuteCommand
a function to execute a command
std::tuple< std::string, std::string, CommandArguments, ExecuteCommand > parse(const std::vector< std::string > &tokens, ParseMode mode) const
parse a command line
void registerCommands(CommandParser &parser)
int main(int argc, char **argv)