|
1 | 1 | { runCommandNoCC
|
2 | 2 | , callPackage
|
| 3 | +, jq |
3 | 4 | }:
|
4 | 5 |
|
5 | 6 | let
|
|
11 | 12 | packageName = utils.node2nixDev.packageName;
|
12 | 13 | }
|
13 | 14 | ''
|
14 |
| - mkdir -p $out/lib/node_modules/${utils.node2nixDev.packageName} |
| 15 | + mkdir -p "$out/lib/node_modules/${utils.node2nixDev.packageName}" |
15 | 16 | # copy the package.json
|
16 |
| - cp ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/package.json $out/lib/node_modules/${utils.node2nixDev.packageName}/ |
| 17 | + cp \ |
| 18 | + "${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/package.json" \ |
| 19 | + "$out/lib/node_modules/${utils.node2nixDev.packageName}/" |
17 | 20 | # copy the dist
|
18 |
| - cp -r ${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist $out/lib/node_modules/${utils.node2nixDev.packageName}/ |
| 21 | + cp -r \ |
| 22 | + "${utils.node2nixDev}/lib/node_modules/${utils.node2nixDev.packageName}/dist" \ |
| 23 | + "$out/lib/node_modules/${utils.node2nixDev.packageName}/" |
19 | 24 | # copy over the production dependencies
|
20 | 25 | if [ -d "${utils.node2nixProd}/lib/node_modules" ]; then
|
21 |
| - cp -r ${utils.node2nixProd}/lib/node_modules $out/lib/node_modules/${utils.node2nixDev.packageName}/ |
| 26 | + cp -r \ |
| 27 | + "${utils.node2nixProd}/lib/node_modules" \ |
| 28 | + "$out/lib/node_modules/${utils.node2nixDev.packageName}/" |
22 | 29 | fi
|
23 |
| - # create symlink to the deployed executable folder, if applicable |
24 |
| - if [ -d "${utils.node2nixDev}/lib/node_modules/.bin" ]; then |
25 |
| - cp -r ${utils.node2nixDev}/lib/node_modules/.bin $out/lib/node_modules/ |
26 |
| - ln -s $out/lib/node_modules/.bin $out/bin |
| 30 | + # symlink bin executables |
| 31 | + if [ \ |
| 32 | + "$(${jq}/bin/jq 'has("bin")' "$out/lib/node_modules/${utils.node2nixDev.packageName}/package.json")" \ |
| 33 | + == \ |
| 34 | + "true" \ |
| 35 | + ]; then |
| 36 | + mkdir -p "$out/bin" |
| 37 | + while IFS= read -r bin_name && IFS= read -r bin_path; do |
| 38 | + # make files executable |
| 39 | + chmod a+x "$out/lib/node_modules/${utils.node2nixDev.packageName}/$bin_path" |
| 40 | + # create the symlink |
| 41 | + ln -s \ |
| 42 | + "../lib/node_modules/${utils.node2nixDev.packageName}/$bin_path" \ |
| 43 | + "$out/bin/$bin_name" |
| 44 | + done < <( |
| 45 | + ${jq}/bin/jq -r 'select(.bin != null) | .bin | to_entries[] | (.key, .value)' \ |
| 46 | + "$out/lib/node_modules/${utils.node2nixDev.packageName}/package.json" |
| 47 | + ) |
27 | 48 | fi
|
28 |
| - ''; |
| 49 | + ''; |
29 | 50 | in
|
30 | 51 | drv
|
0 commit comments