// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "CommandLineProcessor.hpp" #define BOOST_FILESYSTEM_NO_DEPRECATED #include #include #include namespace armnnQuantizer { bool ValidateOutputDirectory(std::string& dir) { if (dir.empty()) { std::cerr << "No output directory specified" << std::endl; return false; } if (dir[dir.length() - 1] != '/') { dir += "/"; } if (!boost::filesystem::exists(dir)) { std::cerr << "Output directory [" << dir << "] does not exist" << std::endl; return false; } if (!boost::filesystem::is_directory(dir)) { std::cerr << "Given output directory [" << dir << "] is not a directory" << std::endl; return false; } return true; } bool ValidateInputFile(const std::string& inputFileName) { if (!boost::filesystem::exists(inputFileName)) { std::cerr << "Input file [" << inputFileName << "] does not exist" << std::endl; return false; } if (boost::filesystem::is_directory(inputFileName)) { std::cerr << "Given input file [" << inputFileName << "] is a directory" << std::endl; return false; } return true; } bool CommandLineProcessor::ProcessCommandLine(int argc, char* argv[]) { namespace po = boost::program_options; po::options_description desc("Options"); try { desc.add_options() ("help,h", "Display help messages") ("infile,f", po::value(&m_InputFileName)->required(), "Input file containing float 32 ArmNN Input Graph") ("outdir,d", po::value(&m_OutputDirectory)->required(), "Directory that output file will be written to") ("outfile,o", po::value(&m_OutputFileName)->required(), "Output file name"); } catch (const std::exception& e) { std::cerr << "Fatal internal error: [" << e.what() << "]" << std::endl; return false; } po::variables_map vm; try { po::store(po::parse_command_line(argc, argv, desc), vm); if (vm.count("help")) { std::cout << desc << std::endl; return false; } po::notify(vm); } catch (const po::error& e) { std::cerr << e.what() << std::endl << std::endl; std::cerr << desc << std::endl; return false; } if (!armnnQuantizer::ValidateInputFile(m_InputFileName)) { return false; } if (!armnnQuantizer::ValidateOutputDirectory(m_OutputDirectory)) { return false; } std::string output(m_OutputDirectory); output.append(m_OutputFileName); if (boost::filesystem::exists(output)) { std::cerr << "Output file [" << output << "] already exists" << std::endl; return false; } return true; } } // namespace armnnQuantizer