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 "help.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  CommandParser parser;
40  registerCommands(parser);
41 
42  if (args.empty() || args[0] == "-h") {
43  helpList(std::cout, parser);
44  return 0;
45  }
46 
47  if (args[0] == "-V") {
48  std::cout << NFD_VERSION_BUILD_STRING << std::endl;
49  return 0;
50  }
51 
52  std::string noun, verb;
54  ExecuteCommand execute;
55  try {
56  std::tie(noun, verb, ca, execute) = parser.parse(args, ParseMode::ONE_SHOT);
57  }
58  catch (const std::invalid_argument& e) {
59  std::cerr << e.what() << std::endl;
60  return 2;
61  }
62 
63  try {
64  ndn::Face face;
65  ndn::KeyChain keyChain;
66  ExecuteContext ctx{noun, verb, ca, face, keyChain};
67  return execute(ctx);
68  }
69  catch (const std::exception& e) {
70  std::cerr << e.what() << std::endl;
71  return 1;
72  }
73 }
74 
75 } // namespace nfdc
76 } // namespace tools
77 } // namespace nfd
78 
79 int
80 main(int argc, char** argv)
81 {
82  return nfd::tools::nfdc::main(argc, argv);
83 }
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...
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)
void helpList(std::ostream &os, const CommandParser &parser, ParseMode mode, const std::string &noun)
Definition: help.cpp:40
int main(int argc, char **argv)