/* =========================================================================== oastat - a program for parsing log files and write the result to a database Copyright (C) 2012 Poul Sander This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ Source information and contacts persons can be found at https://github.com/sago007/oastat/ =========================================================================== */ #include #include #include #include #include #include "db/DbExtra.hpp" int main (int argc, const char* argv[]) { std::string connectstring; std::vector games_to_delete; std::shared_ptr session; try { boost::program_options::options_description desc("Allowed options"); desc.add_options() ("help,h", "Print basic usage information to stdout and quits") ("dbargs", boost::program_options::value(), "Arguments passed to the DB backend") ("delete-game,d", boost::program_options::value>(), "Delete game with a given number from the database") ("config,c", boost::program_options::value >(), "Read a config file with the values. Can be given multiple times") ; boost::program_options::variables_map vm; boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm); boost::program_options::notify(vm); if (vm.count("config")) { std::vector config_filenames = vm["config"].as >(); for ( const std::string& s : config_filenames) { std::ifstream config_file(s); store(parse_config_file(config_file, desc), vm); notify(vm); } } if (vm.count("help")) { std::cout << desc << "\n"; return 1; } if (vm.count("dbargs")) { connectstring = vm["dbargs"].as(); } if (vm.count("delete-game")) { games_to_delete = vm["delete-game"].as>(); } session = std::make_shared(connectstring); cppdb::transaction(*session.get()); for (int game : games_to_delete) { std::cout << "Deleting " << game << "..." << std::flush; deleteGame(session.get(), game); std::cout << "done!\n"; } session->commit(); } catch (std::exception& e) { std::cerr << "Failed!\n" << e.what() << "\n"; return 1; } return 0; }