| #!/bin/bash |
| set -e |
| |
| #mounts the components of soong into a directory structure that Go tools and editors expect |
| |
| #move to the script's directory |
| cd "$(dirname $0)" |
| SCRIPT_PATH="$PWD" |
| |
| #find the root of the Repo checkout |
| cd "${SCRIPT_PATH}"/../../.. |
| ANDROID_PATH="${PWD}" |
| OUTPUT_PATH="$(echo ${GOPATH} | sed 's/\:.*//')" #if GOPATH contains multiple paths, use the first one |
| |
| if [ -z "${OUTPUT_PATH}" ]; then |
| echo "Error; could not determine the desired location at which to create a Go-compatible workspace. Please update GOPATH to specify the desired destination directory" |
| exit 1 |
| fi |
| |
| function confirm() { |
| while true; do |
| echo "Will create GOPATH-compatible directory structure at ${OUTPUT_PATH}" |
| echo -n "Ok [Y/n]?" |
| read decision |
| if [ "${decision}" == "y" -o "${decision}" == "Y" -o "${decision}" == "" ]; then |
| return 0 |
| else |
| if [ "${decision}" == "n" ]; then |
| return 1 |
| else |
| echo "Invalid choice ${decision}; choose either 'y' or 'n'" |
| fi |
| fi |
| done |
| } |
| |
| function bindAll() { |
| bindOne "${ANDROID_PATH}/build/blueprint" "${OUTPUT_PATH}/src/github.com/google/blueprint" |
| bindOne "${ANDROID_PATH}/build/soong" "${OUTPUT_PATH}/src/android/soong" |
| |
| bindOne "${ANDROID_PATH}/art/build" "${OUTPUT_PATH}/src/android/soong/art" |
| bindOne "${ANDROID_PATH}/external/llvm/soong" "${OUTPUT_PATH}/src/android/soong/llvm" |
| bindOne "${ANDROID_PATH}/external/clang/soong" "${OUTPUT_PATH}/src/android/soong/clang" |
| echo |
| echo "Created GOPATH-compatible directory structure at ${OUTPUT_PATH}" |
| } |
| |
| function bindOne() { |
| #causes $newPath to mirror $existingPath |
| existingPath="$1" |
| newPath="$2" |
| mkdir -p "$newPath" |
| echoAndDo bindfs "${existingPath}" "${newPath}" |
| } |
| |
| function echoAndDo() { |
| echo "$@" |
| eval "$@" |
| } |
| |
| if confirm; then |
| echo |
| bindAll |
| else |
| echo "skipping due to user request" |
| exit 1 |
| fi |