blob: 46b7d6be70a09b0aff9fe971920711b2603a6394 [file] [log] [blame]
#!/bin/bash
# Run with -e so the script will fail if any of the steps fail.
set -e
# This script can be cached and used on machines other than the one where it was created. That
# means it can't contain any absolute filepaths. Expose the absolute filepath of the root of
# the project as $BUCK_REAL_ROOT, determined at runtime.
BUCK_REAL_ROOT="$(cd `dirname $0`/<path_back_to_root>; pwd)"
BUCK_TMP_ROOT=`mktemp -d -t sh_binary.XXXXXXXXXX`
OLD_CWD=`pwd`
trap "chmod -R 755 $BUCK_TMP_ROOT && rm -rf $BUCK_TMP_ROOT" EXIT HUP INT TERM
# Navigate to the tmp directory.
cd $BUCK_TMP_ROOT
# Symlink the resources to the $BUCK_TMP_ROOT directory.
SCRIPT_TO_RUN=<script_to_run>
SYMLINK_PATHS=(
<resources:{x| <x><\n>}>
"$SCRIPT_TO_RUN"
)
for path in "${SYMLINK_PATHS[@]}"; do
mkdir -p "$(dirname "$path")"
ln -s "$BUCK_REAL_ROOT/$path" "$BUCK_TMP_ROOT/$path"
done
# Navigate back to the previous directory
cd $OLD_CWD
find $BUCK_TMP_ROOT -type d -exec chmod 555 {} \;
find $BUCK_TMP_ROOT -type f -exec chmod 444 {} \;
BUCK_PROJECT_ROOT=$BUCK_TMP_ROOT "$BUCK_TMP_ROOT/$SCRIPT_TO_RUN" "$@"