From c11445c09c742cf1fee76aba2ea765aa4022d58f Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 20 Feb 2025 14:28:01 -0600 Subject: [PATCH] refactor --- monitarr/libmonitarr/src/actions.cpp | 20 +++++++++++++++++--- monitarr/libmonitarr/src/data_db.cpp | 8 ++++++-- monitarr/monitarr/src/run_cmd.cpp | 11 ++++++++--- monitarr/monitarr/src/usage_cmd.cpp | 28 +++++++++++++++++----------- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/monitarr/libmonitarr/src/actions.cpp b/monitarr/libmonitarr/src/actions.cpp index 4cc93a0..b5d399d 100644 --- a/monitarr/libmonitarr/src/actions.cpp +++ b/monitarr/libmonitarr/src/actions.cpp @@ -146,9 +146,12 @@ auto load_config(std::string &cfg_file) -> app_config { } if (not utils::file::directory{cfg_dir}.create_directory()) { - throw std::runtime_error(fmt::format("failed to create config dir|{}|{}", - cfg_dir, - utils::get_last_error_code())); + throw utils::error::create_exception( + function_name, { + "failed to create config dir", + cfg_dir, + std::to_string(utils::get_last_error_code()), + }); } cfg_file = utils::path::combine(cfg_dir, {"monitarr.json"}); @@ -161,6 +164,17 @@ auto load_config(std::string &cfg_file) -> app_config { cfg.save(cfg_file); } + auto iter = std::ranges::adjacent_find( + cfg.server_list, + [](auto &&srv1, auto &&srv2) -> bool { return srv1.id == srv2.id; }); + if (iter != cfg.server_list.end()) { + throw utils::error::create_exception(function_name, + { + "duplicate server found", + iter->id, + }); + } + return cfg; } diff --git a/monitarr/libmonitarr/src/data_db.cpp b/monitarr/libmonitarr/src/data_db.cpp index a4811b9..796132b 100644 --- a/monitarr/libmonitarr/src/data_db.cpp +++ b/monitarr/libmonitarr/src/data_db.cpp @@ -74,8 +74,12 @@ void data_db::open(std::string_view data_dir) { auto status = rocksdb::TransactionDB::Open( options, rocksdb::TransactionDBOptions{}, db_path, &ptr); if (not status.ok()) { - throw std::runtime_error(fmt::format("failed to open database|{}|{}", - db_path, status.ToString())); + throw utils::error::create_exception(function_name, + { + "failed to open database", + db_path, + status.ToString(), + }); } db_ = std::shared_ptr(ptr); diff --git a/monitarr/monitarr/src/run_cmd.cpp b/monitarr/monitarr/src/run_cmd.cpp index 263a0a6..f2be6c3 100644 --- a/monitarr/monitarr/src/run_cmd.cpp +++ b/monitarr/monitarr/src/run_cmd.cpp @@ -130,15 +130,20 @@ static void check_server(const server_cfg &server, data_db &state_db) { } [[nodiscard]] static auto load_db() -> data_db { + MONITARR_USES_FUNCTION_NAME(); + auto data_dir = utils::get_environment_variable("MONITARR_DATA_DIR"); if (data_dir.empty()) { data_dir = utils::path::combine(".", {"data"}); } if (not utils::file::directory{data_dir}.create_directory()) { - throw std::runtime_error(fmt::format("failed to create data dir|{}", - data_dir, - utils::get_last_error_code())); + throw utils::error::create_exception( + function_name, { + "failed to create data dir", + data_dir, + std::to_string(utils::get_last_error_code()), + }); } data_db state_db{}; diff --git a/monitarr/monitarr/src/usage_cmd.cpp b/monitarr/monitarr/src/usage_cmd.cpp index b494553..c314b64 100644 --- a/monitarr/monitarr/src/usage_cmd.cpp +++ b/monitarr/monitarr/src/usage_cmd.cpp @@ -1,18 +1,24 @@ #include "usage_cmd.hpp" +#include "utils/error.hpp" + namespace monitarr { auto usage_cmd() -> int { - fmt::println("usage:"); - fmt::println(" monitarr -b -i -id "); - fmt::println(" blocklist and search record id at configuration index"); - fmt::println(" monitarr -c"); - fmt::println(" display configuration"); - fmt::println(" monitarr -l -i "); - fmt::println(" display server queue at configuration index"); - fmt::println(" monitarr -r"); - fmt::println(" run monitarr server"); - fmt::println(" monitarr -s -i -id "); - fmt::println(" show record id details at configuration index"); + MONITARR_USES_FUNCTION_NAME(); + + utils::error::handle_info( + function_name, + "\n\nusage:\n" + " monitarr -b -i -id \n" + " blocklist and search record id at configuration index\n" + " monitarr -c\n" + " display configuration\n" + " monitarr -l -i \n" + " display server queue at configuration index\n" + " monitarr -r\n" + " run monitarr server\n" + " monitarr -s -i -id \n" + " show record id details at configuration index\n"); return 0; }