diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-04-02 18:26:39 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-04-02 18:26:39 +0200 |
commit | 6d6467d376ff8ccc758c9fce1fe6d9b658956598 (patch) | |
tree | 2c3378d5a2c4ad14147b36035c5927bf9464b63c /src/libfetchers/tree-info.cc | |
parent | 6cf91d6fbd65d847c1c4a55b4745c1b5f4a7ee9e (diff) |
Move parseTreeInfo()
Diffstat (limited to 'src/libfetchers/tree-info.cc')
-rw-r--r-- | src/libfetchers/tree-info.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/libfetchers/tree-info.cc b/src/libfetchers/tree-info.cc index 50795e162..42a19cbc8 100644 --- a/src/libfetchers/tree-info.cc +++ b/src/libfetchers/tree-info.cc @@ -11,6 +11,40 @@ StorePath TreeInfo::computeStorePath(Store & store) const return store.makeFixedOutputPath(true, narHash, "source"); } +TreeInfo TreeInfo::fromJson(const nlohmann::json & json) +{ + TreeInfo info; + + auto i = json.find("info"); + if (i != json.end()) { + const nlohmann::json & i2(*i); + + auto j = i2.find("narHash"); + if (j != i2.end()) + info.narHash = Hash((std::string) *j); + else + throw Error("attribute 'narHash' missing in lock file"); + + j = i2.find("revCount"); + if (j != i2.end()) + info.revCount = *j; + + j = i2.find("lastModified"); + if (j != i2.end()) + info.lastModified = *j; + + return info; + } + + i = json.find("narHash"); + if (i != json.end()) { + info.narHash = Hash((std::string) *i); + return info; + } + + throw Error("attribute 'info' missing in lock file"); +} + nlohmann::json TreeInfo::toJson() const { nlohmann::json json; |