diff --git a/pkgs/development/tools/language-servers/crystalline/default.nix b/pkgs/development/tools/language-servers/crystalline/default.nix index ee347a86788ce..dee3a3f7de2af 100644 --- a/pkgs/development/tools/language-servers/crystalline/default.nix +++ b/pkgs/development/tools/language-servers/crystalline/default.nix @@ -4,13 +4,21 @@ fetchFromGitHub, llvmPackages, openssl, + shards, makeWrapper, + _experimental-update-script-combinators, + crystal2nix, + runCommand, + writeShellScript, + gitUpdater, + testers, + crystalline, }: let - version = "0.15.0"; + version = "0.17.1"; in -crystal.buildCrystalPackage { +crystal.buildCrystalPackage rec { pname = "crystalline"; inherit version; @@ -18,7 +26,7 @@ crystal.buildCrystalPackage { owner = "elbywan"; repo = "crystalline"; rev = "v${version}"; - hash = "sha256-6ZAogEuOJH1QQ6NSJ+8KZUSFSgQAcvd4U9vWNAGix/M="; + hash = "sha256-SIfInDY6KhEwEPZckgobOrpKXBDDd0KhQt/IjdGBhWo="; }; format = "crystal"; @@ -28,6 +36,7 @@ crystal.buildCrystalPackage { llvmPackages.llvm openssl makeWrapper + shards ]; doCheck = false; @@ -47,6 +56,35 @@ crystal.buildCrystalPackage { wrapProgram "$out/bin/crystalline" --prefix PATH : '${lib.makeBinPath [ llvmPackages.llvm.dev ]}' ''; + passthru = { + updateScript = _experimental-update-script-combinators.sequence [ + (gitUpdater { rev-prefix = "v"; }) + (_experimental-update-script-combinators.copyAttrOutputToFile "crystalline.shardLock" "${builtins.toString ./.}/shard.lock") + { + command = [ + (writeShellScript "update-lock" "cd $1; ${lib.getExe crystal2nix}") + ./. + ]; + supportedFeatures = [ "silent" ]; + } + { + command = [ + "rm" + "${builtins.toString ./.}/shard.lock" + ]; + supportedFeatures = [ "silent" ]; + } + ]; + shardLock = runCommand "shard.lock" { inherit src; } '' + cp $src/shard.lock $out + ''; + + # Since doInstallCheck causes another test error, versionCheckHook is avoided. + tests.version = testers.testVersion { + package = crystalline; + }; + }; + meta = { description = "Language Server Protocol implementation for Crystal"; mainProgram = "crystalline"; diff --git a/pkgs/development/tools/language-servers/crystalline/shards.nix b/pkgs/development/tools/language-servers/crystalline/shards.nix index 2e53527fd0b86..562ce68701015 100644 --- a/pkgs/development/tools/language-servers/crystalline/shards.nix +++ b/pkgs/development/tools/language-servers/crystalline/shards.nix @@ -19,9 +19,4 @@ rev = "e448ce83486f99ef016c311e10ec0cac805cded3"; sha256 = "13yp7805xpd605jpfpb3srqb0psy25w7n6x9mpkcyvzhqmpnpfyq"; }; - version_from_shard = { - url = "https://github.com/hugopl/version_from_shard.git"; - rev = "v1.2.5"; - sha256 = "0xizj0q4rd541rwjbx04cjifc2gfx4l5v6q2y7gmd0ndjmkgb8ik"; - }; }