forked from lix-project/lix
35 lines
992 B
C++
35 lines
992 B
C++
|
#pragma once
|
||
|
|
||
|
#include "hash.hh"
|
||
|
|
||
|
namespace nix {
|
||
|
|
||
|
enum struct FileIngestionMethod : uint8_t {
|
||
|
Flat = false,
|
||
|
Recursive = true
|
||
|
};
|
||
|
|
||
|
/// Pair of a hash, and how the file system was ingested
|
||
|
struct FileSystemHash {
|
||
|
FileIngestionMethod method;
|
||
|
Hash hash;
|
||
|
FileSystemHash(FileIngestionMethod method, Hash hash)
|
||
|
: method(std::move(method))
|
||
|
, hash(std::move(hash))
|
||
|
{ }
|
||
|
FileSystemHash(const FileSystemHash &) = default;
|
||
|
FileSystemHash(FileSystemHash &&) = default;
|
||
|
FileSystemHash & operator = (const FileSystemHash &) = default;
|
||
|
std::string printMethodAlgo() const;
|
||
|
};
|
||
|
|
||
|
/* Compute the prefix to the hash algorithm which indicates how the files were
|
||
|
ingested. */
|
||
|
std::string makeFileIngestionPrefix(const FileIngestionMethod m);
|
||
|
|
||
|
/* Compute the content-addressability assertion (ValidPathInfo::ca)
|
||
|
for paths created by makeFixedOutputPath() / addToStore(). */
|
||
|
std::string makeFixedOutputCA(FileIngestionMethod method, const Hash & hash);
|
||
|
|
||
|
}
|