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.
  • Loading branch information
fmeum committed Aug 17, 2023
1 parent 62dd72f commit 3d78de0
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
23 changes: 23 additions & 0 deletions scripts/bash_completion_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -768,4 +768,27 @@ test_info() {
'info --show_make_env '
}

test_workspace_boundary() {
# "Test that workspace boundary files are recognized"
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 3d78de0

Please sign in to comment.