#include "debug.h" #include "ocdb.h" #include "okapi.h" #include #include #include #include #include using json = nlohmann::json; const std::string Database = "ocpl.sqlite"; int main(int argc, char** argv) { std::string Dump_path; bool update = 0; int o; while ((o = getopt(argc, argv, "i:ud:h?")) != -1) switch (o) { case 'd': try { if (std::stoi(optarg) > 0) { Debug::set_debug_level(std::stoi(optarg)); } } catch (...) { std::cout << "Option \"-d\" requires a valid number as an argument\n"; std::exit(EXIT_FAILURE); } break; case 'i': Dump_path = optarg; if (!Dump_path.ends_with('/')) Dump_path.push_back('/'); break; case 'u': update = 1; break; case 'h': case '?': default: std::cout << "Usage: geodb [-i path] [-uh]\n"; std::cout << "Manage local Opencaching database.\n\n"; std::cout << "\t-i folder\tinitialize database from dump located in given folder\n"; std::cout << "\t-u\tupdate database with changelogs grabbed via OKAPI\n"; std::cout << "\t-h\tdisplay this help screen\n"; std::exit(EXIT_FAILURE); } OCdb db(Database); if (!Dump_path.empty()) db.init(Dump_path); if (update) { std::string ocpl_url = "https://opencaching.pl/okapi/"; #include "config_user_key.h" Okapi OCpl(ocpl_url, ocpl_key); db.update(OCpl); } }