libflake: add lock file path to invalid json error

Previously, when lock file contained invalid JSON nix reported a parser
error without specifying the file it came from.

This change adds flake.lock file path to the error message to avoid
confusion.

(cherry picked from commit e3873aa1a0)
This commit is contained in:
Alexander Romanov 2025-04-06 22:52:46 +03:00 committed by Mergify
parent 63b9b932f4
commit 49b6766332

View File

@ -108,8 +108,13 @@ LockFile::LockFile(
const fetchers::Settings & fetchSettings,
std::string_view contents, std::string_view path)
{
auto json = nlohmann::json::parse(contents);
auto json = [=] {
try {
return nlohmann::json::parse(contents);
} catch (const nlohmann::json::parse_error & e) {
throw Error("Could not parse '%s': %s", path, e.what());
}
}();
auto version = json.value("version", 0);
if (version < 5 || version > 7)
throw Error("lock file '%s' has unsupported version %d", path, version);