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