Skip to content

Commit da2de99

Browse files
committed
feat: add autocomplete for development
1 parent a8c3616 commit da2de99

File tree

7 files changed

+376
-151
lines changed

7 files changed

+376
-151
lines changed
Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,85 @@
11
#!/bin/bash
22
set -x
33

4-
BASH_COMPLETIONS_DIR="/etc/bash_completion.d"
5-
mkdir -p "$BASH_COMPLETIONS_DIR"
4+
BASHRC_FILE="$HOME/.bashrc"
65

7-
# ------------------ kind ------------------
86
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-$(go env GOARCH)
97
chmod +x ./kind
108
mv ./kind /usr/local/bin/kind
119

12-
# Install bash completion (no dotfile edits)
13-
if command -v kind >/dev/null 2>&1; then
14-
kind completion bash > "${BASH_COMPLETIONS_DIR}/kind" || true
10+
BEGIN_MARKER="# BEGIN kind autocompletion"
11+
END_MARKER="# END kind autocompletion"
12+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
13+
echo ""
14+
echo "" >> "$BASHRC_FILE"
15+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
16+
echo "# kind autocompletion" >> "$BASHRC_FILE"
17+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
18+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
19+
echo "fi" >> "$BASHRC_FILE"
20+
echo ". <(kind completion bash)" >> "$BASHRC_FILE"
21+
echo "$END_MARKER" >> "$BASHRC_FILE"
22+
echo ""
1523
fi
1624

17-
# ------------------ kubebuilder ------------------
1825
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/linux/$(go env GOARCH)
1926
chmod +x kubebuilder
2027
mv kubebuilder /usr/local/bin/
2128

22-
# Install bash completion (no dotfile edits)
23-
if command -v kubebuilder >/dev/null 2>&1; then
24-
kubebuilder completion bash > "${BASH_COMPLETIONS_DIR}/kubebuilder" || true
29+
BEGIN_MARKER="# BEGIN kubebuilder autocompletion"
30+
END_MARKER="# END kubebuilder autocompletion"
31+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
32+
echo ""
33+
echo "" >> "$BASHRC_FILE"
34+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
35+
echo "# kubebuilder autocompletion" >> "$BASHRC_FILE"
36+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
37+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
38+
echo "fi" >> "$BASHRC_FILE"
39+
echo ". <(kubebuilder completion bash)" >> "$BASHRC_FILE"
40+
echo "$END_MARKER" >> "$BASHRC_FILE"
41+
echo ""
2542
fi
2643

27-
# ------------------ kubectl ------------------
2844
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
2945
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/$(go env GOARCH)/kubectl"
3046
chmod +x kubectl
3147
mv kubectl /usr/local/bin/kubectl
3248

33-
# Install bash completion (no dotfile edits)
34-
if command -v kubectl >/dev/null 2>&1; then
35-
kubectl completion bash > "${BASH_COMPLETIONS_DIR}/kubectl" || true
49+
BEGIN_MARKER="# BEGIN kubectl autocompletion"
50+
END_MARKER="# END kubectl autocompletion"
51+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
52+
echo ""
53+
echo "" >> "$BASHRC_FILE"
54+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
55+
echo "# kubectl autocompletion" >> "$BASHRC_FILE"
56+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
57+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
58+
echo "fi" >> "$BASHRC_FILE"
59+
echo ". <(kubectl completion bash)" >> "$BASHRC_FILE"
60+
echo "$END_MARKER" >> "$BASHRC_FILE"
61+
echo ""
3662
fi
3763

38-
# ------------------ docker (optional) ------------------
39-
# Only try to install docker completion if docker exists in the container
40-
if command -v docker >/dev/null 2>&1; then
41-
# some docker builds support `docker completion`
42-
docker completion bash > "${BASH_COMPLETIONS_DIR}/docker" || true
64+
BEGIN_MARKER="# BEGIN docker autocompletion"
65+
END_MARKER="# END docker autocompletion"
66+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
67+
echo ""
68+
echo "" >> "$BASHRC_FILE"
69+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
70+
echo "# docker autocompletion" >> "$BASHRC_FILE"
71+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
72+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
73+
echo "fi" >> "$BASHRC_FILE"
74+
echo ". <(docker completion bash)" >> "$BASHRC_FILE"
75+
echo "$END_MARKER" >> "$BASHRC_FILE"
76+
echo ""
4377
fi
4478

45-
# ------------------ network for kind ------------------
4679
docker network create -d=bridge --subnet=172.19.0.0/24 kind
4780

48-
# ------------------ versions ------------------
4981
kind version
5082
kubebuilder version
5183
docker --version
5284
go version
53-
kubectl version --client
85+
kubectl version --client
Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,85 @@
11
#!/bin/bash
22
set -x
33

4-
BASH_COMPLETIONS_DIR="/etc/bash_completion.d"
5-
mkdir -p "$BASH_COMPLETIONS_DIR"
4+
BASHRC_FILE="$HOME/.bashrc"
65

7-
# ------------------ kind ------------------
86
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-$(go env GOARCH)
97
chmod +x ./kind
108
mv ./kind /usr/local/bin/kind
119

12-
# Install bash completion (no dotfile edits)
13-
if command -v kind >/dev/null 2>&1; then
14-
kind completion bash > "${BASH_COMPLETIONS_DIR}/kind" || true
10+
BEGIN_MARKER="# BEGIN kind autocompletion"
11+
END_MARKER="# END kind autocompletion"
12+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
13+
echo ""
14+
echo "" >> "$BASHRC_FILE"
15+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
16+
echo "# kind autocompletion" >> "$BASHRC_FILE"
17+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
18+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
19+
echo "fi" >> "$BASHRC_FILE"
20+
echo ". <(kind completion bash)" >> "$BASHRC_FILE"
21+
echo "$END_MARKER" >> "$BASHRC_FILE"
22+
echo ""
1523
fi
1624

17-
# ------------------ kubebuilder ------------------
1825
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/linux/$(go env GOARCH)
1926
chmod +x kubebuilder
2027
mv kubebuilder /usr/local/bin/
2128

22-
# Install bash completion (no dotfile edits)
23-
if command -v kubebuilder >/dev/null 2>&1; then
24-
kubebuilder completion bash > "${BASH_COMPLETIONS_DIR}/kubebuilder" || true
29+
BEGIN_MARKER="# BEGIN kubebuilder autocompletion"
30+
END_MARKER="# END kubebuilder autocompletion"
31+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
32+
echo ""
33+
echo "" >> "$BASHRC_FILE"
34+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
35+
echo "# kubebuilder autocompletion" >> "$BASHRC_FILE"
36+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
37+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
38+
echo "fi" >> "$BASHRC_FILE"
39+
echo ". <(kubebuilder completion bash)" >> "$BASHRC_FILE"
40+
echo "$END_MARKER" >> "$BASHRC_FILE"
41+
echo ""
2542
fi
2643

27-
# ------------------ kubectl ------------------
2844
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
2945
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/$(go env GOARCH)/kubectl"
3046
chmod +x kubectl
3147
mv kubectl /usr/local/bin/kubectl
3248

33-
# Install bash completion (no dotfile edits)
34-
if command -v kubectl >/dev/null 2>&1; then
35-
kubectl completion bash > "${BASH_COMPLETIONS_DIR}/kubectl" || true
49+
BEGIN_MARKER="# BEGIN kubectl autocompletion"
50+
END_MARKER="# END kubectl autocompletion"
51+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
52+
echo ""
53+
echo "" >> "$BASHRC_FILE"
54+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
55+
echo "# kubectl autocompletion" >> "$BASHRC_FILE"
56+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
57+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
58+
echo "fi" >> "$BASHRC_FILE"
59+
echo ". <(kubectl completion bash)" >> "$BASHRC_FILE"
60+
echo "$END_MARKER" >> "$BASHRC_FILE"
61+
echo ""
3662
fi
3763

38-
# ------------------ docker (optional) ------------------
39-
# Only try to install docker completion if docker exists in the container
40-
if command -v docker >/dev/null 2>&1; then
41-
# some docker builds support `docker completion`
42-
docker completion bash > "${BASH_COMPLETIONS_DIR}/docker" || true
64+
BEGIN_MARKER="# BEGIN docker autocompletion"
65+
END_MARKER="# END docker autocompletion"
66+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
67+
echo ""
68+
echo "" >> "$BASHRC_FILE"
69+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
70+
echo "# docker autocompletion" >> "$BASHRC_FILE"
71+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
72+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
73+
echo "fi" >> "$BASHRC_FILE"
74+
echo ". <(docker completion bash)" >> "$BASHRC_FILE"
75+
echo "$END_MARKER" >> "$BASHRC_FILE"
76+
echo ""
4377
fi
4478

45-
# ------------------ network for kind ------------------
4679
docker network create -d=bridge --subnet=172.19.0.0/24 kind
4780

48-
# ------------------ versions ------------------
4981
kind version
5082
kubebuilder version
5183
docker --version
5284
go version
53-
kubectl version --client
85+
kubectl version --client
Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,85 @@
11
#!/bin/bash
22
set -x
33

4-
BASH_COMPLETIONS_DIR="/etc/bash_completion.d"
5-
mkdir -p "$BASH_COMPLETIONS_DIR"
4+
BASHRC_FILE="$HOME/.bashrc"
65

7-
# ------------------ kind ------------------
86
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-$(go env GOARCH)
97
chmod +x ./kind
108
mv ./kind /usr/local/bin/kind
119

12-
# Install bash completion (no dotfile edits)
13-
if command -v kind >/dev/null 2>&1; then
14-
kind completion bash > "${BASH_COMPLETIONS_DIR}/kind" || true
10+
BEGIN_MARKER="# BEGIN kind autocompletion"
11+
END_MARKER="# END kind autocompletion"
12+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
13+
echo ""
14+
echo "" >> "$BASHRC_FILE"
15+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
16+
echo "# kind autocompletion" >> "$BASHRC_FILE"
17+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
18+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
19+
echo "fi" >> "$BASHRC_FILE"
20+
echo ". <(kind completion bash)" >> "$BASHRC_FILE"
21+
echo "$END_MARKER" >> "$BASHRC_FILE"
22+
echo ""
1523
fi
1624

17-
# ------------------ kubebuilder ------------------
1825
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/linux/$(go env GOARCH)
1926
chmod +x kubebuilder
2027
mv kubebuilder /usr/local/bin/
2128

22-
# Install bash completion (no dotfile edits)
23-
if command -v kubebuilder >/dev/null 2>&1; then
24-
kubebuilder completion bash > "${BASH_COMPLETIONS_DIR}/kubebuilder" || true
29+
BEGIN_MARKER="# BEGIN kubebuilder autocompletion"
30+
END_MARKER="# END kubebuilder autocompletion"
31+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
32+
echo ""
33+
echo "" >> "$BASHRC_FILE"
34+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
35+
echo "# kubebuilder autocompletion" >> "$BASHRC_FILE"
36+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
37+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
38+
echo "fi" >> "$BASHRC_FILE"
39+
echo ". <(kubebuilder completion bash)" >> "$BASHRC_FILE"
40+
echo "$END_MARKER" >> "$BASHRC_FILE"
41+
echo ""
2542
fi
2643

27-
# ------------------ kubectl ------------------
2844
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
2945
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/$(go env GOARCH)/kubectl"
3046
chmod +x kubectl
3147
mv kubectl /usr/local/bin/kubectl
3248

33-
# Install bash completion (no dotfile edits)
34-
if command -v kubectl >/dev/null 2>&1; then
35-
kubectl completion bash > "${BASH_COMPLETIONS_DIR}/kubectl" || true
49+
BEGIN_MARKER="# BEGIN kubectl autocompletion"
50+
END_MARKER="# END kubectl autocompletion"
51+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
52+
echo ""
53+
echo "" >> "$BASHRC_FILE"
54+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
55+
echo "# kubectl autocompletion" >> "$BASHRC_FILE"
56+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
57+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
58+
echo "fi" >> "$BASHRC_FILE"
59+
echo ". <(kubectl completion bash)" >> "$BASHRC_FILE"
60+
echo "$END_MARKER" >> "$BASHRC_FILE"
61+
echo ""
3662
fi
3763

38-
# ------------------ docker (optional) ------------------
39-
# Only try to install docker completion if docker exists in the container
40-
if command -v docker >/dev/null 2>&1; then
41-
# some docker builds support `docker completion`
42-
docker completion bash > "${BASH_COMPLETIONS_DIR}/docker" || true
64+
BEGIN_MARKER="# BEGIN docker autocompletion"
65+
END_MARKER="# END docker autocompletion"
66+
if ! grep -q "$BEGIN_MARKER" "$BASHRC_FILE"; then
67+
echo ""
68+
echo "" >> "$BASHRC_FILE"
69+
echo "$BEGIN_MARKER" >> "$BASHRC_FILE"
70+
echo "# docker autocompletion" >> "$BASHRC_FILE"
71+
echo "if [ -f /usr/local/share/bash-completion/bash_completion ]; then" >> "$BASHRC_FILE"
72+
echo ". /usr/local/share/bash-completion/bash_completion" >> "$BASHRC_FILE"
73+
echo "fi" >> "$BASHRC_FILE"
74+
echo ". <(docker completion bash)" >> "$BASHRC_FILE"
75+
echo "$END_MARKER" >> "$BASHRC_FILE"
76+
echo ""
4377
fi
4478

45-
# ------------------ network for kind ------------------
4679
docker network create -d=bridge --subnet=172.19.0.0/24 kind
4780

48-
# ------------------ versions ------------------
4981
kind version
5082
kubebuilder version
5183
docker --version
5284
go version
53-
kubectl version --client
85+
kubectl version --client

0 commit comments

Comments
 (0)