From 56f6d6337ed5d1227d63558318c4d5da211ba338 Mon Sep 17 00:00:00 2001 From: Bruno Bigras Date: Tue, 20 Jul 2021 14:10:15 -0400 Subject: [PATCH] diffsitter: init at 0.7.1 --- pkgs/tools/text/diffsitter/default.nix | 77 ++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 79 insertions(+) create mode 100644 pkgs/tools/text/diffsitter/default.nix diff --git a/pkgs/tools/text/diffsitter/default.nix b/pkgs/tools/text/diffsitter/default.nix new file mode 100644 index 000000000000..f649f8d838e4 --- /dev/null +++ b/pkgs/tools/text/diffsitter/default.nix @@ -0,0 +1,77 @@ +{ lib +, fetchFromGitHub +, linkFarm +, makeWrapper +, rustPlatform +, tree-sitter +}: + +let + # based on https://github.com/NixOS/nixpkgs/blob/aa07b78b9606daf1145a37f6299c6066939df075/pkgs/development/tools/parsing/tree-sitter/default.nix#L85-L104 + withPlugins = grammarFn: + let + grammars = grammarFn tree-sitter.builtGrammars; + in + linkFarm "grammars" + (map + (drv: + let + name = lib.strings.getName drv; + in + { + name = + "lib" + + (lib.strings.removeSuffix "-grammar" name) + + ".so"; + path = "${drv}/parser"; + } + ) + grammars); + + libPath = withPlugins (_: tree-sitter.allGrammars); +in +rustPlatform.buildRustPackage rec { + pname = "diffsitter"; + version = "0.7.1"; + + src = fetchFromGitHub { + owner = "afnanenayet"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-fDuJMpMseGVKfgg/ERb7dHUZ9n5McYVJLBvuroLZDqE="; + fetchSubmodules = false; + }; + + cargoSha256 = "sha256-HmL7Xopj0gSokjyQY4Umy+5HKUKdRdBE7glMbrsk00c="; + + buildNoDefaultFeatures = true; + buildFeatures = [ + "dynamic-grammar-libs" + # "better-build-info" + ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + postInstall = '' + wrapProgram "$out/bin/diffsitter" \ + --prefix LD_LIBRARY_PATH : "${libPath}" + ''; + + doCheck = false; + # failures: + # tests::diff_hunks_snapshot::_medium_cpp_cpp_false_expects + # tests::diff_hunks_snapshot::_medium_cpp_cpp_true_expects + # tests::diff_hunks_snapshot::_medium_rust_rs_false_expects + # tests::diff_hunks_snapshot::_medium_rust_rs_true_expects + # tests::diff_hunks_snapshot::_short_python_py_true_expects + # tests::diff_hunks_snapshot::_short_rust_rs_true_expects + + meta = with lib; { + homepage = "https://github.com/afnanenayet/diffsitter"; + description = "A tree-sitter based AST difftool to get meaningful semantic diffs"; + license = licenses.mit; + maintainers = with maintainers; [ bbigras ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cfe3cdac82e7..2219e2502fbf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5818,6 +5818,8 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) Security; }; + diffsitter = callPackage ../tools/text/diffsitter { }; + diffstat = callPackage ../tools/text/diffstat { }; difftastic = callPackage ../tools/text/difftastic { };