diff options
Diffstat (limited to 'pkgs/development/tools/ammonite')
-rw-r--r-- | pkgs/development/tools/ammonite/default.nix | 117 |
1 files changed, 78 insertions, 39 deletions
diff --git a/pkgs/development/tools/ammonite/default.nix b/pkgs/development/tools/ammonite/default.nix index 8e420f5f462..680217acfbb 100644 --- a/pkgs/development/tools/ammonite/default.nix +++ b/pkgs/development/tools/ammonite/default.nix @@ -1,45 +1,84 @@ -{ stdenv, fetchurl, jre -, disableRemoteLogging ? true -}: +{ lib, stdenv, fetchurl, jre, nixosTests, writeScript, common-updater-scripts +, git, nixfmt, nix, coreutils, gnused, disableRemoteLogging ? true }: -with stdenv.lib; +with lib; let -common = { scalaVersion, sha256 }: -stdenv.mkDerivation rec { - pname = "ammonite"; - version = "2.2.0"; - - src = fetchurl { - url = "https://github.com/lihaoyi/Ammonite/releases/download/${version}/${scalaVersion}-${version}"; - inherit sha256; - }; + repo = "git@github.com:lihaoyi/Ammonite.git"; - phases = "installPhase"; - - installPhase = '' - install -Dm755 $src $out/bin/amm - sed -i '0,/java/{s|java|${jre}/bin/java|}' $out/bin/amm - '' + optionalString (disableRemoteLogging) '' - sed -i '0,/ammonite.Main/{s|ammonite.Main|ammonite.Main --no-remote-logging|}' $out/bin/amm - sed -i '1i #!/bin/sh' $out/bin/amm - ''; - - meta = { - description = "Improved Scala REPL"; - longDescription = '' - The Ammonite-REPL is an improved Scala REPL, re-implemented from first principles. - It is much more featureful than the default REPL and comes - with a lot of ergonomic improvements and configurability - that may be familiar to people coming from IDEs or other REPLs such as IPython or Zsh. - ''; - homepage = "http://www.lihaoyi.com/Ammonite/"; - license = licenses.mit; - platforms = platforms.all; - maintainers = [ maintainers.nequissimus ]; - }; -}; + common = { scalaVersion, sha256 }: + stdenv.mkDerivation rec { + pname = "ammonite"; + version = "2.4.0"; + + src = fetchurl { + url = + "https://github.com/lihaoyi/Ammonite/releases/download/${version}/${scalaVersion}-${version}"; + inherit sha256; + }; + + phases = "installPhase"; + + installPhase = '' + install -Dm755 $src $out/bin/amm + sed -i '0,/java/{s|java|${jre}/bin/java|}' $out/bin/amm + '' + optionalString (disableRemoteLogging) '' + sed -i "0,/ammonite.Main/{s|ammonite.Main'|ammonite.Main' --no-remote-logging|}" $out/bin/amm + sed -i '1i #!/bin/sh' $out/bin/amm + ''; + + passthru = { + tests = { inherit (nixosTests) ammonite; }; + + updateScript = writeScript "update.sh" '' + #!${stdenv.shell} + set -o errexit + PATH=${ + lib.makeBinPath [ + common-updater-scripts + coreutils + git + gnused + nix + nixfmt + ] + } + oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')" + latestTag="$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags ${repo} '*.*.*' | tail --lines=1 | cut --delimiter='/' --fields=3)" + if [ "$oldVersion" != "$latestTag" ]; then + nixpkgs="$(git rev-parse --show-toplevel)" + default_nix="$nixpkgs/pkgs/development/tools/ammonite/default.nix" + update-source-version ${pname}_2_12 "$latestTag" --version-key=version --print-changes + sed -i "s|$latestTag|$oldVersion|g" "$default_nix" + update-source-version ${pname}_2_13 "$latestTag" --version-key=version --print-changes + nixfmt "$default_nix" + else + echo "${pname} is already up-to-date" + fi + ''; + }; + + meta = { + description = "Improved Scala REPL"; + longDescription = '' + The Ammonite-REPL is an improved Scala REPL, re-implemented from first principles. + It is much more featureful than the default REPL and comes + with a lot of ergonomic improvements and configurability + that may be familiar to people coming from IDEs or other REPLs such as IPython or Zsh. + ''; + homepage = "http://www.lihaoyi.com/Ammonite/"; + license = licenses.mit; + platforms = platforms.all; + maintainers = [ maintainers.nequissimus ]; + }; + }; in { - ammonite_2_12 = common { scalaVersion = "2.12"; sha256 = "0nclfqwy3jfn1680z1hd0zzmc0b79wpvx6gn1jnm19aq7qcvh5zp"; }; - ammonite_2_13 = common { scalaVersion = "2.13"; sha256 = "104bnahn382sb6vwjvchsg0jrnkkwjn08rfh0g5ra7lwhgcj2719"; }; + ammonite_2_12 = common { + scalaVersion = "2.12"; + sha256 = "K8JII6SAmnBjMWQ9a3NqSLLuP1OLcbwobj3G+OCiLdA="; + }; + ammonite_2_13 = common { + scalaVersion = "2.13"; + sha256 = "2F35qhWI6hNb+Eh9ZTDznqo116yN7MZIGVchaAIM36A="; + }; } |