|
|
|
@ -227,6 +227,24 @@ rec { |
|
|
|
|
writePerlBin = name: |
|
|
|
|
writePerl "/bin/${name}"; |
|
|
|
|
|
|
|
|
|
# makePythonWriter takes python and compatible pythonPackages and produces python script writer, |
|
|
|
|
# which validates the script with flake8 at build time. If any libraries are specified, |
|
|
|
|
# python.withPackages is used as interpreter, otherwise the "bare" python is used. |
|
|
|
|
makePythonWriter = python: pythonPackages: name: { libraries ? [], flakeIgnore ? [] }: |
|
|
|
|
let |
|
|
|
|
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}"; |
|
|
|
|
in |
|
|
|
|
makeScriptWriter { |
|
|
|
|
interpreter = |
|
|
|
|
if libraries == [] |
|
|
|
|
then "${python}/bin/python" |
|
|
|
|
else "${python.withPackages (ps: libraries)}/bin/python" |
|
|
|
|
; |
|
|
|
|
check = writeDash "python2check.sh" '' |
|
|
|
|
exec ${pythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1" |
|
|
|
|
''; |
|
|
|
|
} name; |
|
|
|
|
|
|
|
|
|
# writePython2 takes a name an attributeset with libraries and some python2 sourcecode and |
|
|
|
|
# returns an executable |
|
|
|
|
# |
|
|
|
@ -239,17 +257,7 @@ rec { |
|
|
|
|
# |
|
|
|
|
# print Test.a |
|
|
|
|
# '' |
|
|
|
|
writePython2 = name: { libraries ? [], flakeIgnore ? [] }: |
|
|
|
|
let |
|
|
|
|
py = pkgs.python2.withPackages (ps: libraries); |
|
|
|
|
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}"; |
|
|
|
|
in |
|
|
|
|
makeScriptWriter { |
|
|
|
|
interpreter = "${py}/bin/python"; |
|
|
|
|
check = writeDash "python2check.sh" '' |
|
|
|
|
exec ${pkgs.python2Packages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1" |
|
|
|
|
''; |
|
|
|
|
} name; |
|
|
|
|
writePython2 = makePythonWriter pkgs.python2 pkgs.python2Packages; |
|
|
|
|
|
|
|
|
|
# writePython2Bin takes the same arguments as writePython2 but outputs a directory (like writeScriptBin) |
|
|
|
|
writePython2Bin = name: |
|
|
|
@ -267,17 +275,7 @@ rec { |
|
|
|
|
# """) |
|
|
|
|
# print(y[0]['test']) |
|
|
|
|
# '' |
|
|
|
|
writePython3 = name: { libraries ? [], flakeIgnore ? [] }: |
|
|
|
|
let |
|
|
|
|
py = pkgs.python3.withPackages (ps: libraries); |
|
|
|
|
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}"; |
|
|
|
|
in |
|
|
|
|
makeScriptWriter { |
|
|
|
|
interpreter = "${py}/bin/python"; |
|
|
|
|
check = writeDash "python3check.sh" '' |
|
|
|
|
exec ${pkgs.python3Packages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1" |
|
|
|
|
''; |
|
|
|
|
} name; |
|
|
|
|
writePython3 = makePythonWriter pkgs.python3 pkgs.python3Packages; |
|
|
|
|
|
|
|
|
|
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin) |
|
|
|
|
writePython3Bin = name: |
|
|
|
|