#pragma once ///@file #include "derivations.hh" #include "store-api.hh" #include namespace nix { class ParsedDerivation { StorePath drvPath; BasicDerivation & drv; std::unique_ptr structuredAttrs; public: ParsedDerivation(const StorePath & drvPath, BasicDerivation & drv); ~ParsedDerivation(); const nlohmann::json * getStructuredAttrs() const { return structuredAttrs.get(); } std::optional getStringAttr(const std::string & name) const; bool getBoolAttr(const std::string & name, bool def = false) const; std::optional getStringsAttr(const std::string & name) const; StringSet getRequiredSystemFeatures() const; bool canBuildLocally(Store & localStore) const; bool willBuildLocally(Store & localStore) const; bool substitutesAllowed() const; bool useUidRange() const; std::optional prepareStructuredAttrs(Store & store, const StorePathSet & inputPaths); }; std::string writeStructuredAttrsShell(const nlohmann::json & json); }