diff options
| -rw-r--r-- | Jamroot.jam | 8 | ||||
| -rw-r--r-- | gentoobrowse-api/domain/converters.cpp | 22 | ||||
| -rw-r--r-- | gentoobrowse-api/domain/converters.h | 6 | ||||
| -rw-r--r-- | gentoobrowse-api/domain/converters.impl.h | 58 | ||||
| -rw-r--r-- | gentoobrowse-api/domain/unpackPqTextArray.h | 3 | ||||
| -rw-r--r-- | gentoobrowse-api/service/depend.cpp | 7 | ||||
| -rw-r--r-- | gentoobrowse-api/service/maintenance/updatesProcessor.cpp | 4 | ||||
| -rw-r--r-- | gentoobrowse-api/service/maintenance/useGlobalProcessor.cpp | 3 | ||||
| -rw-r--r-- | gentoobrowse-api/service/maintenance/useGroupProcessor.cpp | 3 | ||||
| -rw-r--r-- | gentoobrowse-api/service/maintenance/useLocalProcessor.cpp | 4 | ||||
| -rw-r--r-- | gentoobrowse-api/service/maintenanceBugs.cpp | 6 | ||||
| -rw-r--r-- | gentoobrowse-api/service/utils/dbUtils.cpp | 35 | ||||
| -rw-r--r-- | gentoobrowse-api/service/utils/git.cpp | 6 | ||||
| -rw-r--r-- | gentoobrowse-api/unittests/testDepend.cpp | 9 | ||||
| -rw-r--r-- | gentoobrowse-api/unittests/testMaintenance.cpp | 6 | ||||
| -rw-r--r-- | gentoobrowse-api/util/update.cpp | 39 |
16 files changed, 113 insertions, 106 deletions
diff --git a/Jamroot.jam b/Jamroot.jam index c57aba9..c3877ef 100644 --- a/Jamroot.jam +++ b/Jamroot.jam @@ -14,14 +14,14 @@ project gentoobrowse-api : requirements <visibility>hidden <linkflags>"-Wl,-z,defs,--warn-once,--gc-sections" <variant>release:<lto>on - <variant>debug:<warnings>extra + <toolset>gcc,<variant>debug:<warnings>pedantic + <toolset>clang,<variant>debug:<warnings>extra <variant>debug:<warnings-as-errors>on <variant>debug:<cflags>-Wnon-virtual-dtor <variant>debug:<cflags>-Wold-style-cast <variant>debug:<cflags>-Wcast-align <variant>debug:<cflags>-Wunused <variant>debug:<cflags>-Woverloaded-virtual - <variant>debug:<cflags>-Wpedantic <variant>debug:<cflags>-Wconversion <variant>debug:<cflags>-Wsign-conversion <variant>debug:<cflags>-Wnull-dereference @@ -85,6 +85,6 @@ project gentoobrowse-api : requirements build-project gentoobrowse-api ; -pkg-config.import libxmlpp : : <name>libxml++-3.0 ; -pkg-config.import glibmm : : <name>glibmm-2.4 ; +pkg-config.import libxmlpp : : <name>libxml++-5.0 ; +pkg-config.import glibmm : : <name>glibmm-2.68 ; diff --git a/gentoobrowse-api/domain/converters.cpp b/gentoobrowse-api/domain/converters.cpp index e551d9a..4dfcb75 100644 --- a/gentoobrowse-api/domain/converters.cpp +++ b/gentoobrowse-api/domain/converters.cpp @@ -8,22 +8,20 @@ #include <string> namespace Slicer { - template<typename T> PqArray<T>::PqArray(std::vector<T> * l) : ModelPartForSequence<std::vector<T>>(l) { } - template<typename T> void - PqArray<T>::SetValue(ValueSource && s) + PqArray<T>::SetValue(ValueSource && input) { - std::string in; - s.set(in); - *this->Model = unpackPqArray<T>(in); + std::string inputStr; + input.set(inputStr); + *this->Model = unpackPqArray<T>(inputStr); } template<typename T> bool - PqArray<T>::GetValue(ValueTarget && s) + PqArray<T>::GetValue(ValueTarget && input) { - s.get(packPqArray(*this->Model)); + input.get(packPqArray(*this->Model)); return true; } @@ -31,14 +29,14 @@ namespace Slicer { template class PqArray<std::string>; boost::posix_time::ptime - shortDateToPosixTime(const std::string & s) + shortDateToPosixTime(const std::string & input) { - return boost::posix_time::ptime(boost::gregorian::from_simple_string(s)); + return boost::posix_time::ptime(boost::gregorian::from_simple_string(input)); } std::string - posixTimeToShortDate(const boost::posix_time::ptime & s) + posixTimeToShortDate(const boost::posix_time::ptime & input) { - return boost::gregorian::to_sql_string(s.date()); + return boost::gregorian::to_sql_string(input.date()); } } diff --git a/gentoobrowse-api/domain/converters.h b/gentoobrowse-api/domain/converters.h index 35583e5..3805149 100644 --- a/gentoobrowse-api/domain/converters.h +++ b/gentoobrowse-api/domain/converters.h @@ -10,15 +10,15 @@ namespace Slicer { template<typename T> class DLL_PUBLIC PqArray : public ModelPartForSequence<std::vector<T>> { public: - explicit PqArray(std::vector<T> *); + using ModelPartForSequence<std::vector<T>>::ModelPartForSequence; void SetValue(ValueSource &&) override; bool GetValue(ValueTarget &&) override; }; DLL_PUBLIC - boost::posix_time::ptime shortDateToPosixTime(const std::string & s); + boost::posix_time::ptime shortDateToPosixTime(const std::string & input); DLL_PUBLIC - std::string posixTimeToShortDate(const boost::posix_time::ptime & s); + std::string posixTimeToShortDate(const boost::posix_time::ptime & input); } diff --git a/gentoobrowse-api/domain/converters.impl.h b/gentoobrowse-api/domain/converters.impl.h index f6b6bad..d79b7e4 100644 --- a/gentoobrowse-api/domain/converters.impl.h +++ b/gentoobrowse-api/domain/converters.impl.h @@ -7,18 +7,22 @@ namespace Slicer { template<typename T> class UnpackPqTextArrayInto : public UnpackPqTextArray { public: - UnpackPqTextArrayInto(std::istream & s, std::vector<T> & l) : UnpackPqTextArray(s), list(l) { } + UnpackPqTextArrayInto(std::istream & inputStrm, std::vector<T> & output) : + UnpackPqTextArray(inputStrm), list(output) + { + } void - consume(std::string s) override + consume(std::string input) override { if constexpr (std::is_arithmetic_v<T>) { - if (std::from_chars(s.c_str(), s.c_str() + s.length(), list.emplace_back()).ec != std::error_code {}) { + if (std::from_chars(input.c_str(), input.c_str() + input.length(), list.emplace_back()).ec + != std::error_code {}) { throw std::domain_error {"Invalid arithmetic input"}; } } else { - list.emplace_back(std::move(s)); + list.emplace_back(std::move(input)); } } @@ -28,50 +32,50 @@ namespace Slicer { template<typename T> void - packPqVar(std::ostream & s, const T & l) + packPqVar(std::ostream & outputStrm, const T & input) { if constexpr (std::is_arithmetic_v<T>) { - s << l; + outputStrm << input; } else { - s << '\"'; - std::transform(l.begin(), l.end(), std::ostream_iterator<std::string_view>(s), [](const char & c) { - if (c == '"') { + outputStrm << '\"'; + std::ranges::transform(input, std::ostream_iterator<std::string_view>(outputStrm), [](const char & chr) { + if (chr == '"') { return std::string_view(R"(\")"); } - return std::string_view(&c, 1); + return std::string_view(&chr, 1); }); - s << '\"'; + outputStrm << '\"'; } } template<typename T> std::vector<T> - unpackPqArray(const std::string & s) + unpackPqArray(const std::string & input) { std::vector<T> rtn; - std::stringstream ss(s); - UnpackPqTextArrayInto<T> u(ss, rtn); - u.yylex(); + std::stringstream inputStrm(input); + UnpackPqTextArrayInto<T> unpacker(inputStrm, rtn); + unpacker.yylex(); return rtn; } template<typename T> std::string - packPqArray(const T & l) + packPqArray(const T & input) { - std::stringstream ss; - ss << "{"; - if (!l.empty()) { - auto i = l.cbegin(); - packPqVar(ss, *i); - i++; - while (i != l.cend()) { - ss << ","; - packPqVar(ss, *i++); + std::stringstream outputStrm; + outputStrm << "{"; + if (!input.empty()) { + auto chr = input.cbegin(); + packPqVar(outputStrm, *chr); + chr++; + while (chr != input.cend()) { + outputStrm << ","; + packPqVar(outputStrm, *chr++); } } - ss << "}"; - return std::move(ss).str(); + outputStrm << "}"; + return std::move(outputStrm).str(); } } diff --git a/gentoobrowse-api/domain/unpackPqTextArray.h b/gentoobrowse-api/domain/unpackPqTextArray.h index 47c4cb7..8df8f85 100644 --- a/gentoobrowse-api/domain/unpackPqTextArray.h +++ b/gentoobrowse-api/domain/unpackPqTextArray.h @@ -9,8 +9,7 @@ namespace Slicer { class UnpackPqTextArray : public yyFlexLexer { public: - UnpackPqTextArray(std::istream &); - virtual ~UnpackPqTextArray() = default; + explicit UnpackPqTextArray(std::istream &); int yylex() override; void LexerError(const char * msg) override; diff --git a/gentoobrowse-api/service/depend.cpp b/gentoobrowse-api/service/depend.cpp index 4cfc1b4..28983d2 100644 --- a/gentoobrowse-api/service/depend.cpp +++ b/gentoobrowse-api/service/depend.cpp @@ -7,11 +7,12 @@ #include <lexer-regex.h> #include <memory> #include <optional> +#include <ranges> #include <string> namespace Portage::Utils { AdHoc::Lexer::PatternPtr WhenUse_Begin( - AdHoc::LexerMatchers::regex(R"(\s*(!?[[:alnum:]_@-]+)\?\s*\(\s*)", G_REGEX_OPTIMIZE)); + AdHoc::LexerMatchers::regex(R"(\s*(!?[[:alnum:]_@+-]+)\?\s*\(\s*)", G_REGEX_OPTIMIZE)); AdHoc::Lexer::PatternPtr WhenUse_End(AdHoc::LexerMatchers::regex(R"(\s*\)\s*)", G_REGEX_OPTIMIZE)); AdHoc::Lexer::PatternPtr Or_Begin(AdHoc::LexerMatchers::regex(R"(\s*\|\|\s*\(\s*)", G_REGEX_OPTIMIZE)); AdHoc::Lexer::PatternPtr Or_Group(AdHoc::LexerMatchers::regex(R"(\s*\(\s*)", G_REGEX_OPTIMIZE)); @@ -45,8 +46,8 @@ namespace Portage::Utils { { std::vector<T> rtn; if (x) { - Glib::Regex::split_simple(",", *x).assign_to(rtn); - std::sort(rtn.begin(), rtn.end()); + std::ranges::copy(Glib::Regex::split_simple(",", *x), std::back_inserter(rtn)); + std::ranges::sort(rtn); } return rtn; } diff --git a/gentoobrowse-api/service/maintenance/updatesProcessor.cpp b/gentoobrowse-api/service/maintenance/updatesProcessor.cpp index 9e4a536..2d49bdb 100644 --- a/gentoobrowse-api/service/maintenance/updatesProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/updatesProcessor.cpp @@ -34,8 +34,8 @@ namespace Glib { using namespace AdHoc::FileUtils; namespace Gentoo::Service { - static Glib::RefPtr<Glib::Regex> move - = Glib::Regex::create(R"R(^move ([^/]+)/([^ ]+) ([^/]+)/(.+)$)R", Glib::RegexCompileFlags::REGEX_MULTILINE); + static auto move + = Glib::Regex::create(R"R(^move ([^/]+)/([^ ]+) ([^/]+)/(.+)$)R", Glib::Regex::CompileFlags::MULTILINE); unsigned char UpdatesProcessor::phase() const diff --git a/gentoobrowse-api/service/maintenance/useGlobalProcessor.cpp b/gentoobrowse-api/service/maintenance/useGlobalProcessor.cpp index 811cd87..7dfe5be 100644 --- a/gentoobrowse-api/service/maintenance/useGlobalProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/useGlobalProcessor.cpp @@ -20,8 +20,7 @@ namespace Glib { using namespace AdHoc::FileUtils; namespace Gentoo::Service { - static Glib::RefPtr<Glib::Regex> useDesc - = Glib::Regex::create(R"(^([^#\s][^ ]*)\s+-\s+(.*)$)", Glib::RegexCompileFlags::REGEX_MULTILINE); + static auto useDesc = Glib::Regex::create(R"(^([^#\s][^ ]*)\s+-\s+(.*)$)", Glib::Regex::CompileFlags::MULTILINE); unsigned char UseGlobalProcessor::phase() const diff --git a/gentoobrowse-api/service/maintenance/useGroupProcessor.cpp b/gentoobrowse-api/service/maintenance/useGroupProcessor.cpp index 5d25a21..77e0ba3 100644 --- a/gentoobrowse-api/service/maintenance/useGroupProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/useGroupProcessor.cpp @@ -28,8 +28,7 @@ namespace Glib { namespace U = Gentoo::Utils; namespace Gentoo::Service { - static Glib::RefPtr<Glib::Regex> useDesc - = Glib::Regex::create(R"(^([^#\s][^ ]*)\s+-\s+(.*)$)", Glib::RegexCompileFlags::REGEX_MULTILINE); + static auto useDesc = Glib::Regex::create(R"(^([^#\s][^ ]*)\s+-\s+(.*)$)", Glib::Regex::CompileFlags::MULTILINE); unsigned char UseGroupProcessor::phase() const diff --git a/gentoobrowse-api/service/maintenance/useLocalProcessor.cpp b/gentoobrowse-api/service/maintenance/useLocalProcessor.cpp index 17fead6..eabe4c0 100644 --- a/gentoobrowse-api/service/maintenance/useLocalProcessor.cpp +++ b/gentoobrowse-api/service/maintenance/useLocalProcessor.cpp @@ -24,8 +24,8 @@ namespace Glib { using namespace AdHoc::FileUtils; namespace Gentoo::Service { - static Glib::RefPtr<Glib::Regex> useDesc = Glib::Regex::create( - R"(^([^#\s][^/]*)/([^:]+):([^ ]+)\s+-\s+(.*)$)", Glib::RegexCompileFlags::REGEX_MULTILINE); + static auto useDesc = Glib::Regex::create( + R"(^([^#\s][^/]*)/([^:]+):([^ ]+)\s+-\s+(.*)$)", Glib::Regex::CompileFlags::MULTILINE); unsigned char UseLocalProcessor::phase() const diff --git a/gentoobrowse-api/service/maintenanceBugs.cpp b/gentoobrowse-api/service/maintenanceBugs.cpp index c99a355..6e7a8dc 100644 --- a/gentoobrowse-api/service/maintenanceBugs.cpp +++ b/gentoobrowse-api/service/maintenanceBugs.cpp @@ -50,13 +50,13 @@ namespace Gentoo::Service { protected: void - on_start_element(const Glib::ustring & e, const xmlpp::SaxParser::AttributeList &) override + on_start_element(const xmlpp::ustring & e, const xmlpp::SaxParser::AttributeList &) override { stk.push(e); } void - on_characters(const Glib::ustring & t) override + on_characters(const xmlpp::ustring & t) override { if (stk.top() == "a") { attributes += t; @@ -67,7 +67,7 @@ namespace Gentoo::Service { } void - on_end_element(const Glib::ustring & e) override + on_end_element(const xmlpp::ustring & e) override { stk.pop(); if (e == "li") { diff --git a/gentoobrowse-api/service/utils/dbUtils.cpp b/gentoobrowse-api/service/utils/dbUtils.cpp index 49cd4de..396e75a 100644 --- a/gentoobrowse-api/service/utils/dbUtils.cpp +++ b/gentoobrowse-api/service/utils/dbUtils.cpp @@ -1,54 +1,55 @@ #include "dbUtils.h" #include <boost/algorithm/string/join.hpp> -#include <compileTimeFormatter.h> #include <connection.h> +#include <format> #include <tablepatch.h> #include <unistd.h> #include <vector> namespace Gentoo::Utils::Database { std::string - emptyClone(DB::Connection * db, const std::string & orig) + emptyClone(DB::Connection * dbc, const std::string & orig) { auto tempTable = orig; auto dot = tempTable.rfind('.'); if (dot != std::string::npos) { tempTable = tempTable.substr(dot + 1); } - tempTable += AdHoc::scprintf<"_clone_%?%?">(getpid(), db); - db->execute("CREATE TEMPORARY TABLE " + tempTable + " AS SELECT * FROM " + orig + " WHERE false"); + tempTable += std::format("_clone_{}{}", getpid(), static_cast<void *>(dbc)); + dbc->execute(std::format("CREATE TEMPORARY TABLE {} AS SELECT * FROM {} WHERE false", tempTable, orig)); return tempTable; } std::pair<std::string, DB::ModifyCommandPtr> - namedTemp(DB::Connection * db, const std::string & tempTable, const std::map<std::string, const std::string> & cols) + namedTemp( + DB::Connection * dbc, const std::string & tempTable, const std::map<std::string, const std::string> & cols) { std::set<std::string> keys; std::set<std::string> defs; - for (const auto & c : cols) { - keys.insert(c.first); - defs.insert(c.first + " " + c.second); + for (const auto & col : cols) { + keys.insert(col.first); + defs.insert(std::format("{} {}", col.first, col.second)); } - db->execute("CREATE TEMPORARY TABLE " + tempTable + "(" + boost::join(defs, ",") + ")"); - return {tempTable, tablePatchInserter(db, tempTable, keys)}; + dbc->execute(std::format("CREATE TEMPORARY TABLE {}({})", tempTable, boost::join(defs, ","))); + return {tempTable, tablePatchInserter(dbc, tempTable, keys)}; } void - drop(DB::Connection * db, const std::string & table) + drop(DB::Connection * dbc, const std::string & table) { - db->execute("DROP TABLE " + table); + dbc->execute(std::format("DROP TABLE {}", table)); } DB::ModifyCommandPtr - tablePatchInserter(DB::Connection * dbc, const DB::TablePatch & p) + tablePatchInserter(DB::Connection * dbc, const DB::TablePatch & patch) { - return tablePatchInserter(dbc, p.src, p.cols); + return tablePatchInserter(dbc, patch.src, patch.cols); } DB::ModifyCommandPtr - tablePatchInserter(DB::Connection * dbc, const std::string & t, const std::set<std::string> & c) + tablePatchInserter(DB::Connection * dbc, const std::string & table, const std::set<std::string> & columns) { - return dbc->modify("INSERT INTO " + t + "(" + boost::algorithm::join(c, ", ") + ") VALUES(" - + boost::algorithm::join(std::vector<std::string>(c.size(), "?"), ", ") + ")"); + return dbc->modify(std::format("INSERT INTO {}({}) VALUES({})", table, boost::join(columns, ", "), + boost::join(std::vector<std::string>(columns.size(), "?"), ", "))); } } diff --git a/gentoobrowse-api/service/utils/git.cpp b/gentoobrowse-api/service/utils/git.cpp index 140c41f..8fc7c4a 100644 --- a/gentoobrowse-api/service/utils/git.cpp +++ b/gentoobrowse-api/service/utils/git.cpp @@ -34,10 +34,8 @@ namespace Gentoo::Utils::Git { { auto opts = gitSafeGet(git_fetch_init_options, static_cast<unsigned int>(GIT_FETCH_OPTIONS_VERSION)); opts.prune = GIT_FETCH_PRUNE; - opts.update_fetchhead = 1; - auto localBranch = gitSafeGet(git_repository_head, git_reference_free, repo); - auto localBranchName = gitSafeGet(git_branch_name, localBranch.get()); - auto refspec = RefSpec::get(localBranchName, git_remote_name(remote), remoteBranchName); + opts.update_fetchhead = GIT_REMOTE_UPDATE_FETCHHEAD; + auto refspec = RefSpec::get(remoteBranchName, git_remote_name(remote), remoteBranchName); std::array<char *, 1> s {refspec.data()}; git_strarray refs = {s.data(), 1}; gitSafe(git_remote_fetch, remote, &refs, &opts, nullptr); diff --git a/gentoobrowse-api/unittests/testDepend.cpp b/gentoobrowse-api/unittests/testDepend.cpp index a02c87a..52a020f 100644 --- a/gentoobrowse-api/unittests/testDepend.cpp +++ b/gentoobrowse-api/unittests/testDepend.cpp @@ -293,6 +293,15 @@ BOOST_AUTO_TEST_CASE(wine_staging) BOOST_REQUIRE_EQUAL(ds.size(), 9); } +BOOST_AUTO_TEST_CASE(ccache) +{ + auto ds = Portage::Utils::Depend::parse( + ">=app-arch/zstd-1.3.4:= !static-c++? ( >=dev-cpp/cpp-httplib-0.10.6:= >=dev-libs/libfmt-8.0.0:= ) " + ">=dev-libs/blake3-1.4.0:= >=dev-libs/xxhash-0.8.0 redis? ( >=dev-libs/hiredis-0.13.3:= ) " + "dev-util/shadowman sys-apps/gentoo-functions"); + BOOST_REQUIRE_EQUAL(ds.size(), 8); +} + BOOST_AUTO_TEST_CASE(useWithAtSymble) { auto ds = Portage::Utils::Depend::parse("some@thing? ( app-arch/bzip2 )"); diff --git a/gentoobrowse-api/unittests/testMaintenance.cpp b/gentoobrowse-api/unittests/testMaintenance.cpp index 42691e4..4f4179e 100644 --- a/gentoobrowse-api/unittests/testMaintenance.cpp +++ b/gentoobrowse-api/unittests/testMaintenance.cpp @@ -274,7 +274,7 @@ BOOST_AUTO_TEST_CASE(testUpdateGitRepository) git_repository * repo; BOOST_REQUIRE_EQUAL(0, git_repository_init(&repo, testRepo.c_str(), false)); git_remote * origin; - BOOST_REQUIRE_EQUAL(0, git_remote_create(&origin, repo, "origin", "http://git.randomdan.homeip.net/git/portage")); + BOOST_REQUIRE_EQUAL(0, git_remote_create(&origin, repo, "origin", "https://git.randomdan.homeip.net/git/portage")); git_remote_free(origin); auto commitOid = create_initial_commit(repo); std::array<char, GIT_OID_HEXSZ + 1> commit {}; @@ -287,9 +287,9 @@ BOOST_AUTO_TEST_CASE(testUpdateGitRepository) insRepo->bindParamS(0, "testrepo"); insRepo->bindParamS(1, testRepo.string()); insRepo->bindParamS(2, "origin"); - insRepo->bindParamS(3, "master"); + insRepo->bindParamS(3, "main"); insRepo->bindParamS(4, commit.data()); - insRepo->execute(); + BOOST_REQUIRE_NO_THROW(insRepo->execute()); // Update m->updateRepositories(); diff --git a/gentoobrowse-api/util/update.cpp b/gentoobrowse-api/util/update.cpp index f00cd0b..7f67ada 100644 --- a/gentoobrowse-api/util/update.cpp +++ b/gentoobrowse-api/util/update.cpp @@ -9,17 +9,16 @@ #include <exception> #include <future> #include <iostream> -#include <memory> #include <string> #include <vector> namespace po = boost::program_options; int -main(int c, char ** v) +main(int argc, char ** argv) { std::string endpoint; - bool background, tree, bugs, sendNotifications, pull; + bool background {}, tree {}, bugs {}, sendNotifications {}, pull {}; { po::options_description opts("Gentoo Browse Util::Update options"); opts.add_options()("endpoint", po::value(&endpoint)->default_value("tcp -p 9001"), "Service endpoint")( @@ -29,48 +28,48 @@ main(int c, char ** v) "pull", po::value(&pull)->default_value(true), "Perform a git pull on repositories")("notifications", po::value(&sendNotifications)->default_value(true), "Send notification emails")("help,h", "Show help"); - po::variables_map vm; - po::store(po::command_line_parser(c, v).options(opts).run(), vm); - po::notify(vm); + po::variables_map varmap; + po::store(po::command_line_parser(argc, argv).options(opts).run(), varmap); + po::notify(varmap); - if (vm.count("help")) { - std::cerr << opts << std::endl; - exit(1); + if (varmap.contains("help")) { + std::cerr << opts << '\n'; + exit(EXIT_FAILURE); } } - auto ic = Ice::initialize(c, v); - auto m = Ice::checkedCast<Gentoo::MaintenancePrx>(ic->stringToProxy("maintenance:" + endpoint)); - m->ice_ping(); + auto ice = Ice::initialize(argc, argv); + auto maintPrx = Ice::checkedCast<Gentoo::MaintenancePrx>(ice->stringToProxy("maintenance:" + endpoint)); + maintPrx->ice_ping(); std::vector<std::future<void>> jobs; if (bugs) { - jobs.push_back(m->refreshBugsAsync()); + jobs.push_back(maintPrx->refreshBugsAsync()); } if (pull) { - m->updateRepositories(); + maintPrx->updateRepositories(); } if (tree) { - jobs.push_back(m->refreshPackageTreeAsync()); + jobs.push_back(maintPrx->refreshPackageTreeAsync()); } int failures = 0; if (!background) { - std::for_each(jobs.begin(), jobs.end(), [&failures](auto & f) { + std::ranges::for_each(jobs, [&failures](auto & future) { try { - f.get(); + future.get(); } catch (const std::exception & ex) { failures += 1; - std::cerr << ex.what() << std::endl; + std::cerr << ex.what() << '\n'; } }); if (sendNotifications) { - m->sendNotifications(); + maintPrx->sendNotifications(); } } jobs.clear(); - ic->destroy(); + ice->destroy(); return failures; } |
