forked from lix-project/lix
1d1c3691d2
hash for which no local expansion is available, Nix can execute a `substitute' which should produce a path with such a hash. This is policy-free since Nix does not in any way specify how the substitute should work, i.e., it's an arbitrary (unnormalised) fstate expression. For example, `nix-pull' registers substitutes that fetch Nix archives from the network (through `wget') and unpack them, but any other method is possible as well. This is an improvement over the old Nix sharing scheme, which had a policy (fetching through `wget') built in. The sharing scheme doesn't work completely yet because successors from fstate rewriting have to be registered on the receiving side. Probably the whole successor stuff can be folded up into the substitute mechanism; this would be a nice simplification.
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#ifndef __VALUES_H
|
|
#define __VALUES_H
|
|
|
|
#include <string>
|
|
|
|
#include "hash.hh"
|
|
|
|
using namespace std;
|
|
|
|
|
|
/* Copy a path recursively. */
|
|
void copyPath(string src, string dst);
|
|
|
|
/* Register a substitute. */
|
|
void registerSubstitute(const Hash & srcHash, const Hash & subHash);
|
|
|
|
/* Register a path keyed on its hash. */
|
|
Hash registerPath(const string & path, Hash hash = Hash());
|
|
|
|
/* Return a path whose contents have the given hash. If target is
|
|
not empty, ensure that such a path is realised in target (if
|
|
necessary by copying from another location). If prefix is not
|
|
empty, only return a path that is an descendent of prefix.
|
|
|
|
If no path with the given hash is known to exist in the file
|
|
system,
|
|
*/
|
|
string expandHash(const Hash & hash, const string & target = "",
|
|
const string & prefix = "/");
|
|
|
|
/* Copy a file to the nixStore directory and register it in dbRefs.
|
|
Return the hash code of the value. */
|
|
void addToStore(string srcPath, string & dstPath, Hash & hash);
|
|
|
|
/* Delete a value from the nixStore directory. */
|
|
void deleteFromStore(const string & path);
|
|
|
|
|
|
#endif /* !__VALUES_H */
|