From b9880e8ecdce02f047dfb1d19de5f1ed07a82ac6 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Fri, 8 Jul 2022 10:29:05 +0200 Subject: In install-cas be more liberal in parsing artifact identifiers --- src/buildtool/common/artifact.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/buildtool/common/artifact.cpp (limited to 'src/buildtool/common/artifact.cpp') diff --git a/src/buildtool/common/artifact.cpp b/src/buildtool/common/artifact.cpp new file mode 100644 index 00000000..fc3c5b6e --- /dev/null +++ b/src/buildtool/common/artifact.cpp @@ -0,0 +1,24 @@ +#include "src/buildtool/common/artifact.hpp" + +#include + +auto Artifact::ObjectInfo::LiberalFromString(std::string const& s) noexcept + -> Artifact::ObjectInfo { + std::istringstream iss(s); + std::string id{}; + std::string size_str{"0"}; + std::string type{"f"}; + if (iss.peek() == '[') { + (void)iss.get(); + } + std::getline(iss, id, ':'); + if (not iss.eof()) { + std::getline(iss, size_str, ':'); + } + if (not iss.eof()) { + std::getline(iss, type, ']'); + } + auto size = static_cast(std::atol(size_str.c_str())); + return Artifact::ObjectInfo{ArtifactDigest{id, size}, + FromChar(*type.c_str())}; +} -- cgit v1.2.3