Commit 5094cfef authored by d-brasher's avatar d-brasher
Browse files

zunit: init at 0.8.2

parent b34ee7d4
Loading
Loading
Loading
Loading
+95 −0
Original line number Diff line number Diff line
{
  lib,
  stdenvNoCC,
  fetchFromGitHub,
  zsh,
  revolver,
  installShellFiles,
  testers,
  nix-update-script,
}:

stdenvNoCC.mkDerivation (finalAttrs: {
  pname = "zunit";
  version = "0.8.2";

  src = fetchFromGitHub {
    owner = "zunit-zsh";
    repo = "zunit";
    rev = "v${finalAttrs.version}";
    hash = "sha256-GkBewb795piCaniZJZpGEZFhKaNs8p8swV5z34OegPY=";
    deepClone = true; # Needed in order to get "tests" folder
  };

  strictDeps = true;
  doCheck = true;
  doInstallCheck = true;

  nativeBuildInputs = [
    zsh
    installShellFiles
  ];
  nativeCheckInputs = [ revolver ];
  buildInputs = [
    zsh
    revolver
  ];

  postPatch = ''
    for i in $(find src/ -type f -print); do
      substituteInPlace $i \
        --replace-warn " revolver " " ${lib.getExe revolver} "
    done
  '';

  buildPhase = ''
    runHook preBuild

    zsh build.zsh

    runHook postBuild
  '';

  checkPhase = ''
    runHook preCheck

    HOME="$TEMPDIR" zsh zunit

    runHook postCheck
  '';

  installPhase = ''
    runHook preInstall

    install -Dm755 zunit $out/bin/zunit

    runHook postInstall
  '';

  postInstall = ''
    installShellCompletion --cmd zunit --zsh zunit.zsh-completion
  '';

  installCheckPhase = ''
    runHook preInstallCheck

    PATH=$PATH:$out/bin zunit --help

    runHook postInstallCheck
  '';

  passthru = {
    tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
    updateScript = nix-update-script { };
  };

  meta = {
    description = "Powerful testing framework for ZSH projects";
    homepage = "https://zunit.xyz/";
    downloadPage = "https://github.com/zunit-zsh/zunit/releases";
    license = lib.licenses.mit;
    mainProgram = "zunit";
    inherit (zsh.meta) platforms;
    maintainers = with lib.maintainers; [ d-brasher ];
  };
})