mirror of
https://github.com/NixOS/nix
synced 2024-09-21 11:30:30 -04:00
7a2b566dc8
In the following commits it will become less prevalent.
37 lines
1 KiB
C++
37 lines
1 KiB
C++
#include "store-api.hh"
|
|
|
|
namespace nix {
|
|
|
|
std::string StorePathWithOutputs::to_string(const Store & store) const
|
|
{
|
|
return outputs.empty()
|
|
? store.printStorePath(path)
|
|
: store.printStorePath(path) + "!" + concatStringsSep(",", outputs);
|
|
}
|
|
|
|
|
|
std::pair<std::string_view, StringSet> parsePathWithOutputs(std::string_view s)
|
|
{
|
|
size_t n = s.find("!");
|
|
return n == s.npos
|
|
? std::make_pair(s, std::set<string>())
|
|
: std::make_pair(((std::string_view) s).substr(0, n),
|
|
tokenizeString<std::set<string>>(((std::string_view) s).substr(n + 1), ","));
|
|
}
|
|
|
|
|
|
StorePathWithOutputs Store::parsePathWithOutputs(const std::string & s)
|
|
{
|
|
auto [path, outputs] = nix::parsePathWithOutputs(s);
|
|
return {parseStorePath(path), std::move(outputs)};
|
|
}
|
|
|
|
|
|
StorePathWithOutputs Store::followLinksToStorePathWithOutputs(std::string_view path) const
|
|
{
|
|
auto [path2, outputs] = nix::parsePathWithOutputs(path);
|
|
return StorePathWithOutputs { followLinksToStorePath(path2), std::move(outputs) };
|
|
}
|
|
|
|
}
|