#include "SoilMoistureIo.h" #include "json.hpp" #include "apps.h" #include namespace trygvis { namespace apps { using namespace std; using namespace trygvis::apps; using namespace trygvis::soil_moisture; namespace po = boost::program_options; string inputFile, inputFormat; string outputFile, outputFormat; class sample_convert : public app { public: void add_options(po::options_description_easy_init &options) override { options ("help", "produce this help message") ("input", po::value(&inputFile)->default_value("-")) ("input-format", po::value(&inputFormat)->default_value("csv")) ("output", po::value(&outputFile)->default_value("-")) ("output-format", po::value(&outputFormat)->default_value("plain")); } int main(app_execution &execution) override { auto desc = execution.desc; auto vm = execution.vm; shared_ptr output; istream *inputStream; if (inputFile == "-") { inputStream = &cin; } else { inputStream = new ifstream(inputFile); } ostream *outputStream; if (outputFile == "-") { outputStream = &cout; } else { outputStream = new ofstream(outputFile); } if (outputFormat == "plain") { output = make_shared(*outputStream); } else if (outputFormat == "json") { output = make_shared(*outputStream); } else if (outputFormat == "sql") { output = make_shared(*outputStream); } else { cerr << "Unsupported output format: " << outputFormat << endl; return EXIT_FAILURE; } auto input = make_shared(output); char data[100]; while (!inputStream->eof()) { inputStream->get(data[0]); input->process(boost::asio::buffer(data, 1)); } return EXIT_SUCCESS; } }; } } using namespace trygvis::apps; int main(int argc, char *argv[]) { sample_convert app; return launch_app(argc, argv, app); }