41 lines
1.2 KiB
Bash
41 lines
1.2 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
###
|
||
|
### This script runs 'nix-build' with ./fetch-source.nix and copies a subset
|
||
|
### of the resulting store path into the current working directory.
|
||
|
###
|
||
|
### To disable running chmod, you may set the environment
|
||
|
### variable "FIX_RIGHTS" to "no".
|
||
|
###
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
# 'nix-build' command
|
||
|
NIX_BUILD_BIN="${NIX_BUILD_BIN:-"/usr/bin/env nix-build"}"
|
||
|
|
||
|
# where to place the yarn2nix source
|
||
|
TARGET_DIR="${TARGET_DIR:-"./yarn2nix"}"
|
||
|
|
||
|
# whether to run 'chmod -R u=rwX,g=rX,o-rwx' on copied files in $TARGET_DIR
|
||
|
FIX_RIGHTS="${FIX_RIGHTS:-"yes"}"
|
||
|
|
||
|
fetch_git_source() {
|
||
|
[[ -f ./fetch-source.nix ]] && ret="$($NIX_BUILD_BIN --no-out-link ./fetch-source.nix)" && ec="$?" || ec="$?"
|
||
|
if [[ "$ec" == "0" ]]; then
|
||
|
echo "$ret"
|
||
|
else
|
||
|
printf "error: failed at 'fetch_git_source()' with '%s'" "$ret"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
result="$(fetch_git_source)"
|
||
|
if [[ "$result" == "/nix/store"* ]]; then
|
||
|
mkdir -p "$TARGET_DIR"
|
||
|
cp -Rv \
|
||
|
"${result}/"{bin,internal,lib,nix,default.nix,package.json,yarn.nix,yarn.lock,LICENSE.txt} \
|
||
|
"$TARGET_DIR"
|
||
|
[[ "$FIX_RIGHTS" = "yes" ]] \
|
||
|
&& chmod -v "u=rwX,g=rX,o-rwx" -R \
|
||
|
"$TARGET_DIR/"{bin,internal,lib,nix,default.nix,package.json,yarn.nix,yarn.lock,LICENSE.txt}
|
||
|
fi
|