Skip to content

Commit

Permalink
Add support for more workspace boundary files to bash completion
Browse files Browse the repository at this point in the history
Bash completion now also recognized `WORKSPACE.bazel`, `MODULE.bazel` and `REPO.bazel`.

Also fixes a shellcheck finding.

Closes #19268.

PiperOrigin-RevId: 557931944
Change-Id: Ia2b6e463f4643d9c0d829845fee4228103cf90a0
  • Loading branch information
fmeum authored and copybara-github committed Aug 17, 2023
1 parent 74bc046 commit a0f1976
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 3 deletions.
26 changes: 26 additions & 0 deletions scripts/bash_completion_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -768,4 +768,30 @@ test_info() {
'info --show_make_env '
}

test_workspace_boundary() {
# "Test that workspace boundary files are recognized"
# this test only works for Bazel
if [[ ! " ${COMMAND_ALIASES[*]} " =~ " bazel " ]]; then return; fi

mkdir -p sub_repo/some/pkg
touch sub_repo/some/pkg/BUILD
cd sub_repo 2>/dev/null

touch WORKSPACE.bazel
assert_expansion 'build //s' \
'build //some/'

mv WORKSPACE.bazel MODULE.bazel
assert_expansion 'build //s' \
'build //some/'

mv MODULE.bazel REPO.bazel
assert_expansion 'build //s' \
'build //some/'

rm REPO.bazel
assert_expansion 'build //s' \
'build //sub_repo/'
}

run_suite "Tests of bash completion of 'blaze' command."
10 changes: 7 additions & 3 deletions scripts/bazel-complete-template.bash
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,17 @@ _bazel__get_rule_match_pattern() {
}

# Compute workspace directory. Search for the innermost
# enclosing directory with a WORKSPACE file.
# enclosing directory with a boundary file (see
# src/main/cpp/workspace_layout.cc).
_bazel__get_workspace_path() {
local workspace=$PWD
while true; do
if [ -f "${workspace}/WORKSPACE" ]; then
if [ -f "${workspace}/WORKSPACE" ] || \
[ -f "${workspace}/WORKSPACE.bazel" ] || \
[ -f "${workspace}/MODULE.bazel" ] || \
[ -f "${workspace}/REPO.bazel" ]; then
break
elif [ -z "$workspace" -o "$workspace" = "/" ]; then
elif [ -z "$workspace" ] || [ "$workspace" = "/" ]; then
workspace=$PWD
break;
fi
Expand Down

0 comments on commit a0f1976

Please sign in to comment.