-
Notifications
You must be signed in to change notification settings - Fork 263
Expand file tree
/
Copy path.functions
More file actions
128 lines (116 loc) · 3.66 KB
/
.functions
File metadata and controls
128 lines (116 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/env bash
# get current branch in git repo
git_status() {
BRANCH="$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')"
if [ ! "${BRANCH}" = "" ]; then
STAT="$(parse_git_dirty)"
if printf "%s" "$STAT" | grep -q -e '!' -e '?' -e '+' -e '>' -e 'x' -e '*'; then
printf "%s[%s %s]%s" "$(red)" "$BRANCH" "$STAT" "$(ce)"
else
printf "%s[%s%s]%s" "$(green)" "$BRANCH" "$STAT" "$(ce)"
fi
fi
}
get_repo_basename() {
basename "$(git rev-parse --show-toplevel)"
}
get_repo_owner() {
REPO="$(basename "$(git rev-parse --show-toplevel)")"
OWNER="$(basename "$(git rev-parse --show-toplevel | sed s/"$REPO"//g)")"
printf "%s" "$OWNER"
}
# get current status of git repo
parse_git_dirty() {
status="$(git status 2>&1 | tee)"
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "Your branch is up to date with 'origin/main'" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" ""; fi # clean
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "modified:" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" "!"; fi # dirty
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "Untracked files" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" "?"; fi # untracked
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "new file:" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" "+"; fi # new files
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "renamed:" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" ">"; fi # renamed files
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "deleted:" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" "x"; fi # deleted files
if [ "0" = "$(printf "%s" "${status}" 2> /dev/null | grep "Your branch is ahead of" >/dev/null 2>&1; printf "%s" $?)" ]; then printf "%s" "*"; fi # ahead of
}
# Function to recursively find shell script files
find_shell_scripts() {
dir="$1"
for file in "$dir"/*; do
if [ -d "$file" ]; then
# Skip .git and .terraform directories
if [ "$(basename "$file")" != ".git" ] && [ "$(basename "$file")" != ".terraform" ]; then
find_shell_scripts "$file"
fi
elif [ -f "$file" ]; then
# Check if the file has a shebang line
if head -n 1 "$file" | grep -q '^#!'; then
echo "$file"
fi
fi
done
}
shell_check() {
workspace="$(git rev-parse --show-toplevel)";
dir="$(pwd)";
cd "$workspace" || return;
while read -r file; do
echo "checking $file..."
shellcheck -x "$file"
done <<<"$(grep -Rl -e '^#!' | grep -v '.terraform'| grep -v '.git')"
cd "$dir" || return;
}
# ps1 color functions
# add colors like this `red`\$`ce` generates red '$' prompt
ps1_color_open() {
red=$1
green=$2
blue=$3
printf '\e[0;38;2;%s;%s;%sm' "$red" "$green" "$blue";
}
green() {
ps1_color_open 0 254 0
}
red() {
ps1_color_open 254 0 0
}
blue() {
ps1_color_open 0 0 254
}
orange() {
ps1_color_open 254 127 0
}
white() {
ps1_color_open 254 254 254
}
yellow() {
ps1_color_open 254 254 0
}
# color end
ce() {
printf '\e[m'
}
ts(){
stty cols 450
}
set_terminal_size(){
row="$1"
col="$2"
if [ "$row" == "" ]; then row=70; fi
if [ "$col" == "" ]; then col=300; fi
stty rows "$row"
stty cols "$col"
}
run_tests() {
./run_tests.sh "$@"
}
get_leftovers() {
reg=$1
id=$2
for region in us-west-1 us-west-2 us-east-1 us-east-2; do
if [ -n "$reg" ] && [ "$region" != "$reg" ]; then continue; fi
echo "leftovers in $region:"
if [ -n "$id" ]; then
leftovers -d --iaas=aws --aws-region="$region" --filter="$id";
else
leftovers -d --iaas=aws --aws-region="$region" --filter="Owner:terraform";
fi
done
}