From e958b63712f9a0ff4b523765d2fe12b58aa97fe0 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 4 Apr 2018 16:03:04 +0300 Subject: Implement dependency up/down-grade/unhold --- bpkg/package.cxx | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) (limited to 'bpkg/package.cxx') diff --git a/bpkg/package.cxx b/bpkg/package.cxx index 21c2109..08e71f9 100644 --- a/bpkg/package.cxx +++ b/bpkg/package.cxx @@ -9,6 +9,7 @@ #include #include +#include #include using namespace std; @@ -145,20 +146,22 @@ namespace bpkg return result (); } - vector> + vector, shared_ptr>> filter (const vector>& rps, odb::result&& apr, bool prereq) { - vector> aps; + vector, shared_ptr>> aps; for (shared_ptr ap: pointer_result (apr)) { for (const shared_ptr r: rps) { - if (filter (r, ap, prereq) != nullptr) + shared_ptr ar (filter (r, ap, prereq)); + + if (ar != nullptr) { - aps.push_back (move (ap)); + aps.emplace_back (move (ap), move (ar)); break; } } @@ -167,6 +170,41 @@ namespace bpkg return aps; } + void + check_any_available (const dir_path& c, + transaction& t, + const diag_record* dr) + { + database& db (t.database ()); + + if (db.query_value () == 0) + { + diag_record d; + (dr != nullptr ? *dr << info : d << fail) + << "configuration " << c << " has no repositories" << + info << "use 'bpkg rep-add' to add a repository"; + } + else if (db.query_value () == 0) + { + diag_record d; + (dr != nullptr ? *dr << info : d << fail) + << "configuration " << c << " has no available packages" << + info << "use 'bpkg rep-fetch' to fetch available packages list"; + } + } + + string + package_string (const string& n, const version& v, bool system) + { + string vs (v.empty () + ? string () + : v == wildcard_version + ? "/*" + : '/' + v.string ()); + + return system ? "sys:" + n + vs : n + vs; + } + // selected_package // string selected_package:: -- cgit v1.1