Make main take schema arguments
The main executable now parses YANG schemas as command line arguments
and also sets the search dirs to where the files are located.
Change-Id: I0141ed0330038ba46ae49aa75c44da4af833d40c
diff --git a/src/main.cpp b/src/main.cpp
index 5bf4600..2358dff 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -7,17 +7,18 @@
*/
#include <docopt.h>
+#include <experimental/filesystem>
#include <iostream>
#include "NETCONF_CLI_VERSION.h"
#include "interpreter.hpp"
-#include "static_schema.hpp"
+#include "yang_schema.hpp"
static const char usage[] =
R"(CLI interface to remote NETCONF hosts
Usage:
- netconf-cli
+ netconf-cli <path-to-yang-schema>...
netconf-cli (-h | --help)
netconf-cli --version
)";
@@ -32,19 +33,15 @@
true);
std::cout << "Welcome to netconf-cli" << std::endl;
- auto yangschema = std::make_shared<StaticSchema>();
- yangschema->addModule("mod");
- yangschema->addContainer("", "mod:a", yang::ContainerTraits::Presence);
- yangschema->addContainer("", "mod:b");
- yangschema->addContainer("mod:a", "mod:a2", yang::ContainerTraits::Presence);
- yangschema->addContainer("mod:b", "mod:b2");
- yangschema->addContainer("mod:a/mod:a2", "mod:a3");
- yangschema->addContainer("mod:b/mod:b2", "mod:b3");
- yangschema->addList("", "mod:list", {"number"});
- yangschema->addContainer("mod:list", "contInList");
- yangschema->addList("", "mod:twoKeyList", {"number", "name"});
+ auto yangschema = std::make_shared<YangSchema>();
Parser parser(yangschema);
+ for (auto it : args.at("<path-to-yang-schema>").asStringList()) {
+ auto dir = std::experimental::filesystem::absolute(it).remove_filename();
+ yangschema->addSchemaDirectory(dir.c_str());
+ yangschema->addSchemaFile(it.c_str());
+ }
+
while (true) {
std::cout << parser.currentNode() << "> ";
std::string input;