jj: init at 1.9.2

This commit is contained in:
Paul Meyer 2023-12-16 16:22:51 +01:00
parent 655a9cf33e
commit 418296e34e

View file

@ -0,0 +1,73 @@
{ lib
, buildGoModule
, fetchFromGitHub
, nix-update-script
, testers
, writeText
, runCommand
, jj
}:
buildGoModule rec {
pname = "jj";
version = "1.9.2";
src = fetchFromGitHub {
owner = "tidwall";
repo = "jj";
rev = "v${version}";
hash = "sha256-Yijap5ZghTBe1ahkQgjjxuo++SriJWXgRqrNXIVQ0os=";
};
vendorHash = "sha256-39rA3jMGYhsh1nrGzI1vfHZzZDy4O6ooYWB8af654mM=";
subPackages = [ "cmd/jj" ];
CGO_ENABLED = "0";
ldflags = [
"-s"
"-w"
"-X main.version=${version}"
];
passthru = {
updateScript = nix-update-script { };
tests = with testers; {
version = testVersion { package = jj; };
examples = testEqualContents {
assertion = "examples from projects README.md work";
actual = runCommand "actual" { nativeBuildInputs = [ jj ]; } ''
{
echo '{"name":{"first":"Tom","last":"Smith"}}' | jj name.last
echo '{"name":{"first":"Tom","last":"Smith"}}' | jj name
echo '{"name":{"first":"Tom","last":"Smith"}}' | jj -v Andy name.first
echo '{"friends":["Tom","Jane","Carol"]}' | jj -v Andy friends.-1
echo '{"age":46,"name":{"first":"Tom","last":"Smith"}}' | jj -D age
} > $out
'';
expected = writeText "expected" ''
Smith
{"first":"Tom","last":"Smith"}
{"name":{"first":"Andy","last":"Smith"}}
{"friends":["Tom","Jane","Carol","Andy"]}
{"name":{"first":"Tom","last":"Smith"}}
'';
};
};
};
meta = with lib; {
description = "JSON Stream Editor (command line utility)";
longDescription = ''
JJ is a command line utility that provides a fast and simple way to retrieve
or update values from JSON documents. It's powered by GJSON and SJSON under the hood.
It's fast because it avoids parsing irrelevant sections of json, skipping over values
that do not apply, and aborts as soon as the target value has been found or updated.
'';
homepage = "https://github.com/tidwall/jj";
changelog = "https://github.com/tidwall/jj/releases/tag/v${version}";
license = licenses.mit;
mainProgram = "jj";
maintainers = with maintainers; [ katexochen ];
};
}