| #!/usr/bin/env bash |
| source tools/hscloud/lib.sh || exit 1 |
| |
| function main() { |
| # If we're not running from `bazel run/buld`, complain and re-execute |
| # ourselves. |
| # |
| # We do the check fairly low level, as //tools/hscloud:lib.sh will just |
| # fail in this case. We want to be nice. |
| # |
| # This is all mostly copied from the runfiles.bash snippet in |
| # tools/hscloud/lib.sh. |
| f=bazel_tools/tools/bash/runfiles/runfiles.bash |
| if [ ! -e "${RUNFILES_DIR:-/dev/null}/$f" ] && \ |
| [ ! -e "$(grep -sm1 "^$f " "${RUNFILES_MANIFEST_FILE:-/dev/null}" | cut -f2- -d' ')" ] && \ |
| [ ! -e "$0.runfiles/$f" ] && \ |
| [ ! -e "$(grep -sm1 "^$f " "$0.runfiles_manifest" | cut -f2- -d' ')" ] && \ |
| [ ! -e "$(grep -sm1 "^$f " "$0.exe.runfiles_manifest" | cut -f2- -d' ')" ]; then |
| echo "Uh-oh, looks like you didn't run this as 'bazel run //tools:install'.">&2 |
| echo "Let me fix that for you in a few seconds - but work on your muscle memory, as we'll stop supporting this by some point.">&2 |
| sleep 2 |
| bazel run //tools:install -- "$@" |
| exit $? |
| fi |
| |
| cd $(hscloud::workspace_location) |
| echo "Building hscloud tools and cluster tools..." |
| bazel build //tools/... //cluster/tools/... |
| |
| local path_missing="" |
| local path="$(hscloud::workspace_location)/bazel-bin/tools" |
| if [[ ":$PATH:" != *":$path:"* ]]; then |
| path_missing="$path" |
| fi |
| local path="$(hscloud::workspace_location)/bazel-bin/cluster/tools" |
| if [[ ":$PATH:" != *":$path:"* ]]; then |
| if [ -z "$path_missing" ]; then |
| path_missing="$path" |
| else |
| path_missing="$path_missing:$path" |
| fi |
| fi |
| if [ ! -z "$path_missing" ]; then |
| echo "Tools built correctly, but your PATH should be updated to access them:">&2 |
| echo ' PATH="$PATH:'$path_missing'"' |
| echo 'Add the above line to your shell profile, or source env.sh from the root of hscloud.' |
| else |
| echo "Tools built correctly and in PATH. Happy hsclouding!" |
| fi |
| } |
| |
| main "$@" |