-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit-reviews
executable file
·42 lines (30 loc) · 978 Bytes
/
git-reviews
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
#!/bin/bash
if ! [ -x "$(command -v glab)" ]; then
echo "ERROR: Gitlab Cli is not installed"
return
fi
LOGGED_IN=$(glab auth status 2>&1)
if [ $? -ne 0 ]; then
echo "Error: Not logged into Gitlab CLI"
exit 1
fi
USER=$(echo "$LOGGED_IN" | awk '{ print $7 }' | head -2 | tail -1)
if [[ -z $USER ]]; then
echo "Error: Gitlab user could not be detected"
exit 1
fi
git pull --quiet
ASSIGNEES=$(glab mr list --assignee "$USER" | cat | grep '(main)')
REVIEWERS=$(glab mr list --reviewer "$USER" | cat | grep '(main)')
ALL=$(paste -d'\n' <(echo "$ASSIGNEES") <(echo "$REVIEWERS") | sort -u | awk NF)
if [[ -z $ALL ]]; then
echo "Error: You are not an assignee or reviewer for anything in this repository"
exit 1
fi
CHOICE=$(echo "$ALL" | fzf --prompt "Choose Your MR: " --height=~50% --layout=reverse --border --exit-0)
if [[ -z $CHOICE ]]; then
exit 0
fi
MR=$(echo "$CHOICE" | awk '{ print $NF }' | tr -d '()')
git checkout --quiet "$MR"
git pull --quiet