diff --git a/apps/pdal.cpp b/apps/pdal.cpp index 6a8e802231..8d6b169c1f 100644 --- a/apps/pdal.cpp +++ b/apps/pdal.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * Copyright (c) 2013, Howard Butler (hobu.inc@gmail.com) -* Copyright (c) 2014, Bradley J Chambers (brad.chambers@gmail.com) +* Copyright (c) 2014-2015, Bradley J Chambers (brad.chambers@gmail.com) * * All rights reserved. * @@ -33,16 +33,23 @@ * OF SUCH DAMAGE. ****************************************************************************/ -//#include #include +#include #include #include +#include +#include +#include +#include +#include +#include + using namespace pdal; -namespace po = boost::program_options; std::string headline("------------------------------------------------------------------------------------------"); +static std::vector s_loaded_kernels; void outputVersion() { @@ -52,26 +59,32 @@ void outputVersion() std::cout << std::endl; } -void outputHelp(po::options_description const& options) +void outputHelp(bool no_plugins) { - std::cerr << "Usage: pdal [--debug] [--drivers] [--help] [--options[=]] [--version]" << std::endl; - std::cerr << options << std::endl; + std::cerr << "Usage: pdal [--debug] [--drivers] [--help] [--options[=]] [--version]\n"; + std::cerr << " --debug Show debug information\n"; + std::cerr << " --drivers Show drivers\n"; + std::cerr << " -h [ --help ] Print help message\n"; + std::cerr << " --options [=arg(=all)] Show driver options\n"; + std::cerr << " --version Show version info\n"; + std::cerr << "\n"; - std::cerr << "The most commonly used pdal commands are:" << std::endl; + std::cerr << "The most commonly used pdal commands are:\n"; + + KernelFactory f(no_plugins); + std::vector loaded_kernels = f.getKernelNames(); - KernelFactory f; - std::map const& kernels = f.getKernelInfos(); - for (auto i = kernels.begin(); i != kernels.end(); ++i) - std::cout << " - " << i->second.getName() << std::endl; + for (auto name : loaded_kernels) + std::cout << " - " << name << std::endl; std::cout << "See http://pdal.io/apps.html for more detail"; std::cout << std::endl; } -void outputDrivers() +void outputDrivers(bool no_plugins) { - StageFactory f; - std::map const& drivers = f.getStageInfos(); + StageFactory f(no_plugins); + std::map sm = f.getStageMap(); std::ostringstream strm; @@ -88,21 +101,21 @@ void outputDrivers() strm << std::left; - for (auto i = drivers.begin(); i != drivers.end(); ++i) + for (auto s : sm) { std::vector lines; - std::string description(i->second.getDescription()); + std::string description(s.second); description = boost::algorithm::erase_all_copy(description, "\n"); Utils::wordWrap(description, lines, description_column-1); if (lines.size() == 1) { - strm << std::setw(name_column) << i->second.getName() << " " + strm << std::setw(name_column) << s.first << " " << std::setw(description_column) << description << std::endl; } else { - strm << std::setw(name_column) << i->second.getName() << " " + strm << std::setw(name_column) << s.first << " " << lines[0] << std::endl; } @@ -118,108 +131,233 @@ void outputDrivers() std::cout << strm.str() << std::endl; } -void outputOptions(std::string const& opt) +void outputOptions(std::string const& n, bool no_plugins) { - StageFactory f; - std::cout << opt << std::endl; - std::cout << f.toRST(opt) << std::endl; + StageFactory f(no_plugins); + std::unique_ptr s = f.createStage(n); + std::vector