mirror of
https://github.com/NixOS/nix
synced 2025-06-25 23:11:16 +02:00
Move StorePathWithOutputs
into its own header/file
In the following commits it will become less prevalent.
This commit is contained in:
parent
f7d9f7c338
commit
7a2b566dc8
8 changed files with 55 additions and 40 deletions
36
src/libstore/path-with-outputs.cc
Normal file
36
src/libstore/path-with-outputs.cc
Normal file
|
@ -0,0 +1,36 @@
|
|||
#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) };
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue