linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / bashup-events / generic.nix
blobfd4e2cfe9f5f2663278cf46b304b1af3c48d9d30
2   # general
3   lib
4 , resholvePackage
5 , bash
6 , shellcheck
7 , doCheck ? true
8 , doInstallCheck ? true
9   # variant-specific
10 , variant
11 , version
12 , branch
13 , src
14 , fake ? false
15 , keep
17 let
18   # extracting this so that it's trivial to test in other shells
19   installCheck = shell:
20     ''
21       echo "testing bashup.events in ${shell}"
22       ${shell} <<'EOF'
23       source $out/bin/bashup.events
24       neat(){
25         echo $0: Hi from event \'test event\'. I can have both $1 and $2 arguments.
26         exit 0
27       }
28       event on "test event" @2 neat curried
29       echo event registered
30       event emit "test event" runtime
31       exit 1 # fail if emitting event didn't exit clean
32       EOF
33     '';
36 resholvePackage rec {
37   # bashup.events doesn't version yet but it has two variants with
38   # differing features/performance characteristics:
39   # - branch master: a variant for bash 3.2+
40   # - branch bash44: a variant for bash 4.4+
41   pname = "bashup-events${variant}-unstable";
42   # should be YYYY-MM-DD
43   inherit version;
44   inherit src;
46   installPhase = ''
47     runHook preInstall
48     install -Dt $out/bin bashup.events
49     runHook postInstall
50   '';
52   inherit doCheck;
53   checkInputs = [ shellcheck bash ];
55   # check based on https://github.com/bashup/events/blob/master/.dkrc
56   checkPhase = ''
57     runHook preCheck
58     SHELLCHECK_OPTS='-e SC2016,SC2145' ${shellcheck}/bin/shellcheck ./bashup.events
59     ${bash}/bin/bash -n ./bashup.events
60     ${bash}/bin/bash ./bashup.events
61     runHook postCheck
62   '';
64   solutions = {
65     events = {
66       inputs = [ ];
67       interpreter = "none";
68       scripts = [ "bin/bashup.events" ];
69       inherit keep;
70     } // lib.optionalAttrs (lib.isAttrs fake) { inherit fake; };
71   };
73   inherit doInstallCheck;
74   installCheckInputs = [ bash ];
75   installCheckPhase = ''
76     runHook preInstallCheck
77     ${installCheck "${bash}/bin/bash"}
78     runHook postInstallCheck
79   '';
81   meta = with lib; {
82     inherit branch;
83     description = "An event listener/callback API for creating extensible bash programs";
84     homepage = "https://github.com/bashup/events";
85     license = licenses.cc0;
86     maintainers = with maintainers; [ abathur ];
87     platforms = platforms.all;
88   };