#!/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 "$@"
