diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-13 09:44:36 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2023-03-13 09:44:36 +0200 |
commit | c753c2138b565e984985c2dade03e53836fcfb12 (patch) | |
tree | 23498db3f7cf24e4438222f412d4a61a65bad067 /tests/host-os-release/driver.cxx | |
parent | f527705103d38264aa40557e7866a99cfa138f88 (diff) |
Move os-release facility from bpkg, add support for Mac OS, *BSD, Windows
Diffstat (limited to 'tests/host-os-release/driver.cxx')
-rw-r--r-- | tests/host-os-release/driver.cxx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/host-os-release/driver.cxx b/tests/host-os-release/driver.cxx new file mode 100644 index 0000000..3b40634 --- /dev/null +++ b/tests/host-os-release/driver.cxx @@ -0,0 +1,58 @@ +// file : host-os-release/driver.cxx -*- C++ -*- +// license : MIT; see accompanying LICENSE file + +#include <libbutl/host-os-release.hxx> + +#include <libbutl/path.hxx> + +namespace butl +{ + LIBBUTL_SYMEXPORT os_release + host_os_release_linux (path f = {}); +} + +#include <iostream> + +#undef NDEBUG +#include <cassert> + +using namespace std; +using namespace butl; + +int +main (int argc, char* argv[]) +{ + assert (argc >= 2); // <host-target-triplet> + + target_triplet host (argv[1]); + + os_release r; + if (host.class_ == "linux") + { + assert (argc == 3); // <host-target-triplet> <file-path> + r = host_os_release_linux (path (argv[2])); + } + else + { + assert (argc == 2); + if (optional<os_release> o = host_os_release (host)) + r = move (*o); + else + { + cerr << "unrecognized host os " << host.string () << endl; + return 1; + } + } + + cout << r.name_id << '\n'; + for (auto b (r.like_ids.begin ()), i (b); i != r.like_ids.end (); ++i) + cout << (i != b ? "|" : "") << *i; + cout << '\n' + << r.version_id << '\n' + << r.variant_id << '\n' + << r.name << '\n' + << r.version_codename << '\n' + << r.variant << '\n'; + + return 0; +} |