#pragma once ///@file #include "source-accessor.hh" #include #include namespace nix { struct Source; /** * Return an object that provides access to the contents of a NAR * file. */ ref makeNarAccessor(std::string && nar); ref makeNarAccessor(Source & source); /** * Create a NAR accessor from a NAR listing (in the format produced by * listNar()). The callback getNarBytes(offset, length) is used by the * readFile() method of the accessor to get the contents of files * inside the NAR. */ using GetNarBytes = std::function; ref makeLazyNarAccessor( const std::string & listing, GetNarBytes getNarBytes); /** * Write a JSON representation of the contents of a NAR (except file * contents). */ nlohmann::json listNar(ref accessor, const CanonPath & path, bool recurse); }