diff --git a/bazelisk.sh b/bazelisk.sh index 7ba3153f717571..96feda6623caf4 100755 --- a/bazelisk.sh +++ b/bazelisk.sh @@ -93,10 +93,14 @@ function outquery_starlark_expr() { esac } +# Arguments: +# $qexpr: starlark expression - see `outquery_starlark_expr` +# $name: name of an array containing Bazel arguments that should come _before_ +# the subcommand (e.g. `--bazelrc=...`). function do_outquery() { - local qexpr="$1" - shift - "$file" cquery "$@" \ + local qexpr="$1"; shift + + "$file" "${pre_cmd_args[@]}" cquery "$@" \ --output=starlark --starlark:expr="$qexpr" \ --ui_event_filters=-info --noshow_progress } @@ -121,6 +125,14 @@ function main() { fi fi + # Shift all flags (starting with `-`) that come before the subcommand + # into an array. + pre_cmd_args=() + while [[ "$1" == -* ]]; do + pre_cmd_args+=("$1") + shift + done + case "${1-}" in outquery*) # The custom 'outquery' command can be used to query bazel for the @@ -130,8 +142,7 @@ function main() { # outquery-all: return all output files associated with the label. # outquery-x: return output files containing the substring "x". # outquery.x: return output files ending with the substring ".x". - local qexpr - qexpr="$(outquery_starlark_expr "$1")" + local qexpr="$(outquery_starlark_expr "$1")" shift do_outquery "$qexpr" "$@" ;; @@ -150,13 +161,13 @@ function main() { local qexpr outfile qexpr="$(outquery_starlark_expr outquery)" outfile=$(do_outquery "$qexpr" "$@") - "$file" build "$@" + "$file" "${pre_cmd_args[@]}" build "$@" # shellcheck disable=SC2059 # We are intentionally using $command_template as a format string. eval "$(printf "$command_template" "$outfile")" ;; *) - exec "$file" "$@" + exec "$file" "${pre_cmd_args[@]}" "$@" ;; esac }