diff --git a/pkgs/by-name/ad/adr-tools/package.nix b/pkgs/by-name/ad/adr-tools/package.nix new file mode 100644 index 000000000000..7092ce9353ea --- /dev/null +++ b/pkgs/by-name/ad/adr-tools/package.nix @@ -0,0 +1,118 @@ +{ + lib, + stdenv, + fetchFromGitHub, + installShellFiles, + makeWrapper, + nix-update-script, + + bash, + bashInteractive, + coreutils, + findutils, + gawk, + getopt, + gnugrep, + gnused, + + # tests + adr-tools, + runCommand, +}: + +stdenv.mkDerivation rec { + pname = "adr-tools"; + version = "3.0.0"; + + src = fetchFromGitHub { + owner = "npryce"; + repo = "adr-tools"; + tag = version; + hash = "sha256-JEwLn+SY6XcaQ9VhN8ARQaZc1zolgAJKfIqPggzV+sU="; + }; + + nativeBuildInputs = [ + installShellFiles + makeWrapper + ]; + + buildInputs = [ + # need an interactive interpreter for compgen + bashInteractive + ]; + + checkInputs = [ getopt ]; + + dontConfigure = true; + dontBuild = true; + doCheck = true; + + # patch makefile and shebangs so checks can run + patchPhase = '' + substituteInPlace Makefile --replace-fail '/bin:/usr/bin' '$${HOST_PATH}' + patchShebangs src/ + patchShebangs approve + ''; + + checkPhase = '' + make check + ''; + + installPhase = '' + mkdir -p $out/bin/ $out/libexec + cp src/* $out/libexec + + makeWrapper $out/libexec/adr $out/bin/adr --prefix PATH : ${ + lib.makeBinPath [ + coreutils + findutils + gawk + getopt + gnugrep + gnused + ] + } + # avoid having two bash dependencies in output + substituteInPlace $out/bin/adr --replace-fail "${lib.getExe bash}" "${lib.getExe bashInteractive}" + + installShellCompletion --bash autocomplete/adr + ''; + + passthru = { + tests.default = runCommand "adr-tools-test" { } '' + set -euo pipefail + export PATH=$PATH:${ + lib.makeBinPath [ + adr-tools + gnugrep + ] + } + + mkdir $out + cd $out + + adr init + test -e doc/adr/0001-record-architecture-decisions.md + + EDITOR= adr new blah + test -e doc/adr/0002-blah.md + + adr generate toc | grep 0002-blah.md + adr list | grep 0002-blah.md + + adr link 2 Amends 1 "TESTED AMEND" + grep 'TESTED AMEND' doc/adr/0001-record-architecture-decisions.md | grep 0002-blah.md + ''; + + updateScript = nix-update-script { }; + }; + + meta = { + description = "Command-line tools for working with Architecture Decision Records"; + homepage = "https://github.com/npryce/adr-tools"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ adamcstephens ]; + mainProgram = "adr"; + platforms = lib.platforms.all; + }; +}