diff options
-rw-r--r-- | scripts/BUILD | 15 | ||||
-rwxr-xr-x | scripts/generate_bash_completion.sh | 77 |
2 files changed, 7 insertions, 85 deletions
diff --git a/scripts/BUILD b/scripts/BUILD index 7c782cc760..decf702cfc 100644 --- a/scripts/BUILD +++ b/scripts/BUILD @@ -8,16 +8,15 @@ genrule( name = "bash_completion", srcs = ["bazel-complete-template.bash"], outs = ["bazel-complete.bash"], - cmd = " ".join([ - "$(location :generate_bash_completion.sh)", - "--bazel=$(location //src:bazel)", - "--javabase=$(JAVABASE)", - "--output=$@", - "--prepend=$(location bazel-complete-template.bash)", - ]), + cmd = "cat $(SRCS) > $@\n" + + "touch err.log\n" + + "TMP=`mktemp -d $${TMPDIR:-/tmp}/tmp.XXXXXXXXXX`\n" + + "trap \"rm -fr err.log $${TMP}\" EXIT\n" + + "$(location //src:bazel) " + + " --batch --output_user_root=$${TMP} --host_javabase=$(JAVABASE) " + + " help completion 2>err.log >>$@ || { cat err.log; exit 1; }", output_to_bindir = 1, tools = [ - ":generate_bash_completion.sh", "//src:bazel", "//tools/defaults:jdk", ], diff --git a/scripts/generate_bash_completion.sh b/scripts/generate_bash_completion.sh deleted file mode 100755 index 83851e39ff..0000000000 --- a/scripts/generate_bash_completion.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh -# -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# -# Generates the Bash completion script for Bazel. -# -# At a minimum, you must pass the --bazel and --output flags to specify the path -# to the Bazel binary to use and the output file to generate. -# -# Callers can customize the completion script by passing additional files with -# the --prepend and --append flags, which are stitched together to generate the -# final completion script. Prepended files can override built-in variables and -# appended files can override built-in functions. -# - -set -e - -die() { - echo "${@}" 1>&2 - exit 1 -} - -get_optarg() { - expr "${1}" : "[^=]*=\\(.*\\)" -} - -append= -bazel= -javabase= -output= -prepend= -while [ ${#} -gt 0 ]; do - case "${1}" in - --append=*) append="${append} $(get_optarg "${1}")" ;; - --bazel=*) bazel="$(get_optarg "${1}")" ;; - --javabase=*) javabase="$(get_optarg "${1}")" ;; - --output=*) output="$(get_optarg "${1}")" ;; - --prepend=*) prepend="${prepend} $(get_optarg "${1}")" ;; - --*) die "Unknown option ${1}" ;; - *) break ;; - esac - shift -done -[ ${#} -eq 0 ] || die "No arguments allowed" -[ -n "${bazel}" ] || die "--bazel required but not provided" -[ -n "${output}" ] || die "--output required but not provided" - -tempdir="$(mktemp -d "${TMPDIR:-/tmp}/generate_bash_completion.XXXXXXXX")" -trap "rm -rf '${tempdir}'" EXIT - -touch "${tempdir}/WORKSPACE" -mkdir "${tempdir}/root" - -[ -z "${prepend}" ] || cat ${prepend} >>"${tempdir}/output" - -host_javabase_flag= -[ -z "${javabase}" ] || host_javabase_flag="--host_javabase=${javabase}" -"${bazel}" --output_user_root="${tempdir}/root" ${host_javabase_flag} \ - help completion >>"${tempdir}/output" - -[ -z "${append}" ] || cat ${append} >>"${tempdir}/output" - -rm -f "${output}" -mv "${tempdir}/output" "${output}" |