|  | #!/bin/bash | 
|  |  | 
|  | # This script is helpful in entering an interactive shell from a bazel build | 
|  | # before running a given bazel executable. | 
|  | # This can provide a quick way to explore the sandbox directory and filesystem. | 
|  | # Typical use is with | 
|  | # | 
|  | #     bazel run --run_under=//tools/bazel:shell_wrapper //:target | 
|  | #     OR | 
|  | #     bazel run --config=shell //:target | 
|  |  | 
|  | shell='/bin/bash' | 
|  | rcfile='/tmp/pytorch_bazel_tools_shellwrap' | 
|  | while [[ $# -gt 0 ]] ; do | 
|  | case "$1" in | 
|  | --shell_bin_path) | 
|  | # path for the shell executable | 
|  | shell="$2" | 
|  | shift 2 | 
|  | ;; | 
|  | --rcfile) | 
|  | # path for the file used to write the environment | 
|  | rcfile="$2" | 
|  | shift 2 | 
|  | ;; | 
|  | *) | 
|  | # remaining arguments are part of the command for execution | 
|  | break | 
|  | ;; | 
|  | esac | 
|  | done | 
|  |  | 
|  | if ! tty -s; then | 
|  | echo 'A tty is not available.' | 
|  | echo "Use \`bazel run\`, not \`bazel test\`." | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | NOCOLOR='\033[0m' | 
|  | YELLOW='\033[1;33m' | 
|  |  | 
|  | # store the environment in a file | 
|  | export PYTORCH_SHELL_COMMAND=$* | 
|  | echo "alias run=\"$*\"" > "$rcfile" | 
|  | echo "PS1='\s-\v\$ '" >> "$rcfile" | 
|  |  | 
|  | echo ===== | 
|  | # print the execution command (command is yellow) | 
|  | echo -e "alias run=${YELLOW}$PYTORCH_SHELL_COMMAND${NOCOLOR}" | 
|  | echo ===== | 
|  |  | 
|  | echo "Entering interactive shell at the execution root:" | 
|  |  | 
|  | # quote escape all the arguments to use as a single input string | 
|  | cmd="'$shell' --noprofile --rcfile '$rcfile'" | 
|  |  | 
|  | # run the command in a script psuedo terminal and dump to null | 
|  | /usr/bin/script -c "$cmd" -q /dev/null |