The alias `gb` will list all bugs (or allows to query for them) by default. But if only a single argument is provided, and that argument is a bug id then it shows the bug. This allows a nice workflow like: ```sh $ gb # -> returns list of bugs, pick one from it $ gb <bug-id> # -> returns detailed description of bug ```
73 lines
2.4 KiB
Bash
73 lines
2.4 KiB
Bash
#!/usr/bin/env sh
|
|
|
|
if ! exist git-bug; then
|
|
return 1
|
|
fi
|
|
|
|
# POSIX-compliant version of . <(cmd) substitution
|
|
# shellcheck source=/dev/null # but shellcheck can't access
|
|
git-bug completion zsh | . /dev/fd/0
|
|
|
|
alias gbt='git-bug termui'
|
|
gb() {
|
|
if [ "$#" -eq 1 ] && git-bug bug status "$1" >/dev/null 2>/dev/null; then
|
|
git-bug bug show "$1"
|
|
else
|
|
git-bug bug "$@"
|
|
fi
|
|
}
|
|
alias gbw="git-bug bug show"
|
|
alias gbs="git-bug bug select"
|
|
|
|
alias gbn='git-bug bug new'
|
|
alias gbm='git-bug bug comment new'
|
|
|
|
# 'git-bug edit' function to edit:
|
|
# - bug descriptions (pass a bug-id)
|
|
# - comments (pass a comment-id)
|
|
if [ -x "$(command -v vipe)" ] && [ -x "$(command -v jq)" ]; then
|
|
gbe() {
|
|
if git-bug bug status "$1" >/dev/null 2>/dev/null; then
|
|
id=$(git-bug bug show --format json "$1" | jq --raw-output '.comments[0].id')
|
|
msg=$(git-bug bug show --format json "$1" | jq --raw-output '.comments[0].message')
|
|
chain=$(git-bug bug show "$1" | while read -r line; do echo "# $line"; done)
|
|
|
|
txt="$(printf "%s\n\n%s\n# %s" "$msg" "# Please enter the comment message. Lines starting with '#' will be ignored,
|
|
# and an empty message aborts the operation.
|
|
#
|
|
# Bug history:
|
|
#" "$chain")"
|
|
|
|
outp=$(printf "%s" "$txt" | vipe | sed '/^#/d')
|
|
comp=$(printf "%s" "$txt" | sed '/^#/d')
|
|
if [ -z "$outp" ]; then
|
|
echo Empty message, nothing to do. >&2
|
|
elif [ "$comp" = "$outp" ]; then
|
|
echo No change detected, nothing to do. >&2
|
|
else
|
|
git-bug bug comment edit -m "$outp" "$id"
|
|
fi
|
|
else
|
|
# TODO: Populate comment edit msg with old comment just like above
|
|
# Might need upstream changes to have 'show bug comment' interface
|
|
# because currently we can't just 'display' a single bug comment
|
|
# TODO: If git-bug has a bug selected (with git-bug select)
|
|
# we could use this here
|
|
git-bug bug comment edit "$@"
|
|
fi
|
|
}
|
|
fi
|
|
|
|
# TODO: edit bug title
|
|
alias gbte='git-bug bug title edit'
|
|
|
|
# TODO: Implement toggle function
|
|
# grab current status and then open or close accordingly
|
|
alias gbo='git-bug bug status close'
|
|
|
|
alias gbp='git-bug push'
|
|
alias gbl='git-bug pull'
|
|
|
|
alias gbu='git-bug user' # list users
|
|
# show primary user info
|
|
alias gbU='git-bug user user "$(git-bug user | cut -d" " -f1 | head -n1)"'
|