toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / pkgs / by-name / sh / shab / package.nix
blobee4fca701e4b4ada1cae54fb0f4af12188a9c782
2   bash,
3   stdenv,
4   lib,
5   runCommand,
6   writeText,
7   fetchFromGitHub,
8 }:
9 let
10   version = "1.0.0";
12   shab = stdenv.mkDerivation {
13     pname = "shab";
14     inherit version;
16     src = fetchFromGitHub {
17       owner = "zimbatm";
18       repo = "shab";
19       rev = "v${version}";
20       hash = "sha256-UW4tRZSir7KG7KXg0sOCd8kkIydEwZ6kdwxCeo0Ojgo=";
21     };
23     postPatch = ''
24       for f in test.sh test/*.sh; do
25         patchShebangs "$f"
26       done
27     '';
29     doCheck = true;
30     doInstallCheck = true;
32     checkPhase = ''
33       ./test.sh
34     '';
36     installPhase = ''
37       mkdir -p $out/bin
38       cp ./shab $out/bin/shab
39     '';
41     installCheckPhase = ''
42       [[ "$(echo 'Hello $entity' | entity=world $out/bin/shab)" == 'Hello world' ]]
43     '';
45     passthru = {
46       inherit render renderText;
47     };
49     meta = with lib; {
50       description = "Bash templating language";
51       mainProgram = "shab";
52       homepage = "https://github.com/zimbatm/shab";
53       license = licenses.unlicense;
54       maintainers = with maintainers; [ zimbatm ];
55       platforms = bash.meta.platforms;
56     };
57   };
59   /*
60      shabScript:       a path or filename to use as a template
61      parameters.name:  the name to use as part of the store path
62      parameters:       variables to expose to the template
63   */
64   render =
65     shabScript: parameters:
66     let
67       extraParams = {
68         inherit shabScript;
69       };
70     in
71     runCommand "out" (parameters // extraParams) ''
72       ${shab}/bin/shab "$shabScript" >$out
73     '';
75   /*
76      shabScriptText:   a string to use as a template
77      parameters.name:  the name to use as part of the store path
78      parameters:       variables to expose to the template
79   */
80   renderText = shabScriptText: parameters: render (writeText "template" shabScriptText) parameters;
83 shab