diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-05-21 21:10:09 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-05-24 17:39:13 +0300 |
commit | 3a6c4ab1b6fc79a6a543088553cdd6bc8cb0a1dd (patch) | |
tree | 1ca0c3b9ef763276ff45c20a62d2504833e5f67d /bpkg/pkg-fetch.cxx | |
parent | 1cab4fbd051ee5a71f073446ad5ad1b3d79f1031 (diff) |
Adapt to inventing package_name type
Diffstat (limited to 'bpkg/pkg-fetch.cxx')
-rw-r--r-- | bpkg/pkg-fetch.cxx | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/bpkg/pkg-fetch.cxx b/bpkg/pkg-fetch.cxx index e157bd9..0ce6d9e 100644 --- a/bpkg/pkg-fetch.cxx +++ b/bpkg/pkg-fetch.cxx @@ -22,10 +22,12 @@ using namespace butl; namespace bpkg { + // Can return a new selected package object, replacing the existing one. + // static shared_ptr<selected_package> pkg_fetch (dir_path c, transaction& t, - string n, + package_name n, version v, path a, repository_location rl, @@ -56,6 +58,20 @@ namespace bpkg // pkg_purge_fs (c, t, p, simulate); + // Note that if the package name spelling changed then we need to update + // it, to make sure that the subsequent commands don't fail and the + // diagnostics is not confusing. However, we cannot update the object + // id, so have to erase it and persist afterwards. + // + if (p->name.string () != n.string ()) + { + db.erase (p); + p = nullptr; + } + } + + if (p != nullptr) + { p->version = move (v); p->state = package_state::fetched; p->repository_fragment = move (rl); @@ -100,7 +116,7 @@ namespace bpkg static void pkg_fetch_check (const dir_path& c, transaction& t, - const string& n, + const package_name& n, bool replace) { tracer trace ("pkg_fetch_check"); @@ -170,7 +186,7 @@ namespace bpkg pkg_fetch (const common_options& co, const dir_path& c, transaction& t, - string n, + package_name n, version v, bool replace, bool simulate) @@ -299,9 +315,9 @@ namespace bpkg fail << "package name/version argument expected" << info << "run 'bpkg help pkg-fetch' for more information"; - const char* arg (args.next ()); - string n (parse_package_name (arg)); - version v (parse_package_version (arg)); + const char* arg (args.next ()); + package_name n (parse_package_name (arg)); + version v (parse_package_version (arg)); if (v.empty ()) fail << "package version expected" << |