aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/tools/poetry2nix/poetry2nix/shell-scripts.nix
blob: cbaa4439afe12d6485dc35a83a5442bb07ce916b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{ lib
, scripts
, python
}:
let
  mkScript = bin: entrypoint:
    let
      elem = builtins.elemAt (builtins.split ":" entrypoint);
      module = elem 0;
      fn = elem 2;
    in
    ''
      cat << EOF >> $out/bin/${bin}
      #!${python.interpreter}
      import sys
      import re

      # Insert "" to add CWD to import path
      sys.path.insert(0, "")

      from ${module} import ${fn}

      if __name__ == '__main__':
          sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', "", sys.argv[0])
          sys.exit(${fn}())
      EOF
      chmod +x $out/bin/${bin}
    '';
in
python.pkgs.buildPythonPackage {
  name = "poetry2nix-env-scripts";
  dontUnpack = true;
  dontUseSetuptoolsBuild = true;
  dontConfigure = true;
  dontUseSetuptoolsCheck = true;

  installPhase = ''
    mkdir -p $out/bin
    ${lib.concatStringsSep "\n" (lib.mapAttrsToList mkScript scripts)}
  '';
}