Skip to content

Commit 0f60378

Browse files
committed
feat: Allow specifying multiple directories at once to link
1 parent 3a81a00 commit 0f60378

File tree

2 files changed

+59
-31
lines changed

2 files changed

+59
-31
lines changed

pkg/lib/commands/do-link.sh

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,44 @@
11
# shellcheck shell=bash
22

33
do-link() {
4+
if (( $# == 0 )); then
5+
die "You must supply at least one directory"
6+
fi
7+
48
local install_deps='yes'
59

6-
case $1 in
7-
--no-deps)
8-
install_deps='no'
9-
shift
10+
case "$1" in
11+
--no-deps)
12+
install_deps='no'
13+
shift
1014
;;
1115
esac
1216

13-
local directory="$1"
14-
15-
if [ ! -d "$directory" ]; then
16-
die "Directory '$directory' not found"
17-
fi
18-
19-
directory="$(util.readlink "$directory")"
20-
21-
local namespace="bpm-local"
22-
local repository="${directory##*/}"
23-
local package="$namespace/$repository"
24-
25-
if [ -e "$BPM_PACKAGES_PATH/$package" ]; then
26-
die "Package '$package' is already present"
27-
fi
28-
29-
# TODO: local git clone
30-
mkdir -p "$BPM_PACKAGES_PATH/$namespace"
31-
ln -s "$directory" "$BPM_PACKAGES_PATH/$package"
32-
33-
log.info "Linking '$directory'"
34-
if [ "$install_deps" = 'yes' ]; then
35-
do-plumbing-add-deps "$package"
36-
fi
37-
do-plumbing-link-bins "$package"
38-
do-plumbing-link-completions "$package"
39-
do-plumbing-link-man "$package"
17+
for directory; do
18+
if [ ! -d "$directory" ]; then
19+
die "Directory '$directory' not found"
20+
fi
21+
22+
directory="$(util.readlink "$directory")"
23+
24+
local namespace="bpm-local"
25+
local repository="${directory##*/}"
26+
local package="$namespace/$repository"
27+
28+
if [ -e "$BPM_PACKAGES_PATH/$package" ]; then
29+
die "Package '$package' is already present"
30+
fi
31+
32+
# TODO: local git clone
33+
mkdir -p "$BPM_PACKAGES_PATH/$namespace"
34+
ln -s "$directory" "$BPM_PACKAGES_PATH/$package"
35+
36+
log.info "Linking '$directory'"
37+
if [ "$install_deps" = 'yes' ]; then
38+
do-plumbing-add-deps "$package"
39+
fi
40+
do-plumbing-link-bins "$package"
41+
do-plumbing-link-completions "$package"
42+
do-plumbing-link-man "$package"
43+
done
4044
}

tests/do-link.bats

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,30 @@ load 'util/init.sh'
8383

8484
}
8585

86+
@test "calls link-bins, link-completions, link-man and deps in order for multiple directories" {
87+
test_util.mock_command do-plumbing-add-deps
88+
test_util.mock_command do-plumbing-link-bins
89+
test_util.mock_command do-plumbing-link-completions
90+
test_util.mock_command do-plumbing-link-man
91+
92+
mkdir 'package2' 'package3'
93+
94+
run do-link 'package2' 'package3'
95+
96+
assert_success
97+
assert_line -n 0 -e "Linking '/(.*)/bpm/cwd/package2'"
98+
assert_line -n 1 "do-plumbing-add-deps bpm-local/package2"
99+
assert_line -n 2 "do-plumbing-link-bins bpm-local/package2"
100+
assert_line -n 3 "do-plumbing-link-completions bpm-local/package2"
101+
assert_line -n 4 "do-plumbing-link-man bpm-local/package2"
102+
assert_line -n 5 -e "Linking '/(.*)/bpm/cwd/package3'"
103+
assert_line -n 6 "do-plumbing-add-deps bpm-local/package3"
104+
assert_line -n 7 "do-plumbing-link-bins bpm-local/package3"
105+
assert_line -n 8 "do-plumbing-link-completions bpm-local/package3"
106+
assert_line -n 9 "do-plumbing-link-man bpm-local/package3"
107+
108+
}
109+
86110
@test "respects the --no-deps option in the correct order" {
87111
test_util.mock_command do-plumbing-add-deps
88112
test_util.mock_command do-plumbing-link-bins

0 commit comments

Comments
 (0)