diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-01-16 13:53:43 +0200 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2023-01-16 16:22:15 +0300 |
commit | 8e20c1ed163be60cb576b5ad8f5d27b6320154a6 (patch) | |
tree | bde57b0b18400d37f87df53d6889838ab592e4cd /bpkg/system-package-manager.cxx | |
parent | c7e76c23b49c423f352b283c7afba248b4ce77e9 (diff) |
Add os_release facility
Diffstat (limited to 'bpkg/system-package-manager.cxx')
-rw-r--r-- | bpkg/system-package-manager.cxx | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/bpkg/system-package-manager.cxx b/bpkg/system-package-manager.cxx index 1503c32..aa9bed8 100644 --- a/bpkg/system-package-manager.cxx +++ b/bpkg/system-package-manager.cxx @@ -15,14 +15,33 @@ namespace bpkg unique_ptr<system_package_manager> make_system_package_manager (const target_triplet& host, - const string& type) + const string& name) { unique_ptr<system_package_manager> r; + if (optional<os_release> osr = host_os_release (host)) + { + if (host.class_ == "linux") + { + if (osr->name_id == "debian" || + osr->name_id == "ubuntu" || + find_if (osr->like_ids.begin (), osr->like_ids.end (), + [] (const string& n) + { + return n == "debian" || n == "ubuntu"; + }) != osr->like_ids.end ()) + { + // @@ TODO: verify name if specified. + + //r.reset (new system_package_manager_debian (move (*osr))); + } + } + } + if (r == nullptr) { - if (!type.empty ()) - fail << "unsupported package manager type '" << type << "' for host " + if (!name.empty ()) + fail << "unsupported package manager '" << name << "' for host " << host; } |