btrbk: add mainProgram
[NixPkgs.git] / pkgs / by-name / sh / sharness / package.nix
blob7829b0009b498a3b7f209335ac764bbb7d356356
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , perl
5 , perlPackages
6 , sharnessExtensions ? {} }:
8 stdenv.mkDerivation (finalAttrs: {
9   pname = "sharness";
10   version = "1.2.0";
12   src = fetchFromGitHub {
13     owner = "felipec";
14     repo = "sharness";
15     rev = "v${finalAttrs.version}";
16     hash = "sha256-C0HVWgTm9iXDSFyXcUVRfT0ip31YGaaZ6ZvxggK/x7o=";
17   };
19   # Used for testing
20   nativeBuildInputs = [ perl perlPackages.IOTty ];
22   outputs = [ "out" "doc" ];
24   makeFlags = [ "prefix=$(out)" ];
26   extensions = lib.mapAttrsToList (k: v: "${k}.sh ${v}") sharnessExtensions;
28   postInstall = lib.optionalString (sharnessExtensions != {}) ''
29     extDir=$out/share/sharness/sharness.d
30     mkdir -p "$extDir"
31     linkExtensions() {
32       set -- $extensions
33       while [ $# -ge 2 ]; do
34         ln -s "$2" "$extDir/$1"
35         shift 2
36       done
37     }
38     linkExtensions
39   '';
41   doCheck = true;
43   passthru.SHARNESS_TEST_SRCDIR = finalAttrs.finalPackage + "/share/sharness";
45   meta = with lib; {
46     description = "Portable shell library to write, run and analyze automated tests adhering to Test Anything Protocol (TAP)";
47     homepage = "https://github.com/chriscool/sharness";
48     license = licenses.gpl2Only;
49     maintainers = [ maintainers.spacefrogg ];
50     platforms = platforms.unix;
51   };