summaryrefslogtreecommitdiff
path: root/tests/tools/nnpackage_run/src/args.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tools/nnpackage_run/src/args.cc')
-rw-r--r--tests/tools/nnpackage_run/src/args.cc108
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/tools/nnpackage_run/src/args.cc b/tests/tools/nnpackage_run/src/args.cc
new file mode 100644
index 000000000..a7593fabb
--- /dev/null
+++ b/tests/tools/nnpackage_run/src/args.cc
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "args.h"
+
+#include <iostream>
+#include <boost/filesystem.hpp>
+
+namespace NNPackageRun
+{
+
+Args::Args(const int argc, char **argv) noexcept
+{
+ Initialize();
+ Parse(argc, argv);
+}
+
+void Args::Initialize(void)
+{
+ // General options
+ po::options_description general("General options");
+
+ // clang-format off
+ general.add_options()
+ ("help,h", "Display available options")
+ ("nnpackage", po::value<std::string>()->required())
+ ("dump,d", po::value<std::string>()->default_value(""), "Output filename")
+ ("load,l", po::value<std::string>()->default_value(""), "Input filename");
+ // clang-format on
+
+ _options.add(general);
+ _positional.add("nnpackage", 1);
+}
+
+void Args::Parse(const int argc, char **argv)
+{
+ po::variables_map vm;
+ po::store(po::command_line_parser(argc, argv).options(_options).positional(_positional).run(),
+ vm);
+
+ {
+ auto conflicting_options = [&](const std::string &o1, const std::string &o2) {
+ if ((vm.count(o1) && !vm[o1].defaulted()) && (vm.count(o2) && !vm[o2].defaulted()))
+ {
+ throw boost::program_options::error(std::string("Two options '") + o1 + "' and '" + o2 +
+ "' cannot be given at once.");
+ }
+ };
+ }
+
+ if (vm.count("help"))
+ {
+ std::cout << "nnpackage_run\n\n";
+ std::cout << "Usage: " << argv[0] << " path to nnpackage root directory [<options>]\n\n";
+ std::cout << _options;
+ std::cout << "\n";
+
+ exit(0);
+ }
+
+ po::notify(vm);
+
+ if (vm.count("dump"))
+ {
+ _dump_filename = vm["dump"].as<std::string>();
+ }
+
+ if (vm.count("load"))
+ {
+ _load_filename = vm["load"].as<std::string>();
+ }
+
+ if (vm.count("nnpackage"))
+ {
+ _package_filename = vm["nnpackage"].as<std::string>();
+
+ if (_package_filename.empty())
+ {
+ // TODO Print usage instead of the below message
+ std::cerr << "Please specify nnpackage file. Run with `--help` for usage."
+ << "\n";
+
+ exit(1);
+ }
+ else
+ {
+ if (!boost::filesystem::exists(_package_filename))
+ {
+ std::cerr << "nnpackage not found: " << _package_filename << "\n";
+ }
+ }
+ }
+}
+
+} // end of namespace NNPackageRun