hive-forge: add milestone verb (list/create/close), closes #226
This commit is contained in:
parent
02ace544bc
commit
de6ff3da29
3 changed files with 54 additions and 4 deletions
|
|
@ -371,11 +371,60 @@ pkgs.writeShellApplication {
|
|||
fi
|
||||
}
|
||||
|
||||
cmd_milestone() {
|
||||
# milestone [list|create|close] [args...] [repo]
|
||||
# Manage milestones. Default action: list.
|
||||
# list [repo] -- list open milestones as JSON
|
||||
# create --title <title> [--desc <desc>] [--due YYYY-MM-DD] [repo] -- create milestone, print id+title
|
||||
# close <id> [repo] -- close a milestone
|
||||
local _action="''${1:-list}"
|
||||
shift || true
|
||||
local _repo="$HIVE_FORGE_REPO"
|
||||
case "$_action" in
|
||||
list)
|
||||
if [ $# -gt 0 ] && [[ "$1" != --* ]]; then _repo="$1"; shift; fi
|
||||
forge_get "$FORGE_API/repos/$_repo/milestones?state=open&limit=50" \
|
||||
| jq '[.[] | {id,title,open_issues,closed_issues,due_on,description}]'
|
||||
;;
|
||||
create)
|
||||
local _title="" _desc="" _due=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--title) _title="$2"; shift 2 ;;
|
||||
--desc) _desc="$2"; shift 2 ;;
|
||||
--due) _due="$2"; shift 2 ;;
|
||||
*) _repo="$1"; shift ;;
|
||||
esac
|
||||
done
|
||||
if [ -z "$_title" ]; then
|
||||
echo "usage: hive-forge milestone create --title <title> [--desc <desc>] [--due YYYY-MM-DD] [repo]" >&2; exit 1
|
||||
fi
|
||||
local _payload
|
||||
_payload=$(jq -n --arg t "$_title" --arg d "$_desc" --arg due "$_due" \
|
||||
'{title:$t} |
|
||||
if $d != "" then . + {description:$d} else . end |
|
||||
if $due != "" then . + {due_on:($due+"T00:00:00Z")} else . end')
|
||||
forge_post "$FORGE_API/repos/$_repo/milestones" "$_payload" \
|
||||
| jq '{id,title}'
|
||||
;;
|
||||
close)
|
||||
if [ $# -lt 1 ]; then echo "usage: hive-forge milestone close <id> [repo]" >&2; exit 1; fi
|
||||
local _id="$1"; shift
|
||||
if [ $# -gt 0 ]; then _repo="$1"; fi
|
||||
forge_patch "$FORGE_API/repos/$_repo/milestones/$_id" '{"state":"closed"}' \
|
||||
| jq '{id,title,state}'
|
||||
;;
|
||||
*)
|
||||
echo "unknown milestone action: $_action (use list, create, close)" >&2; exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
VERB="''${1:-}"
|
||||
if [ -z "$VERB" ]; then
|
||||
echo "usage: hive-forge <verb> [args...]" >&2
|
||||
echo "verbs: view, issue, issue-create, issue-edit, pr, pr-create, comment, assign, close," >&2
|
||||
echo " labels, pr-reviews, branches, tree-sha, diff, subscription," >&2
|
||||
echo " labels, milestone, pr-reviews, branches, tree-sha, diff, subscription," >&2
|
||||
echo " attach-issue, attach-comment" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -392,6 +441,7 @@ pkgs.writeShellApplication {
|
|||
assign) cmd_assign "$@" ;;
|
||||
close) cmd_close "$@" ;;
|
||||
labels) cmd_labels "$@" ;;
|
||||
milestone) cmd_milestone "$@" ;;
|
||||
pr-reviews) cmd_pr_reviews "$@" ;;
|
||||
branches) cmd_branches "$@" ;;
|
||||
tree-sha) cmd_tree_sha "$@" ;;
|
||||
|
|
@ -402,7 +452,7 @@ pkgs.writeShellApplication {
|
|||
*)
|
||||
echo "hive-forge: unknown verb '$VERB'" >&2
|
||||
echo "verbs: view, issue, issue-create, issue-edit, pr, pr-create, comment, assign, close," >&2
|
||||
echo " labels, pr-reviews, branches, tree-sha, diff, subscription," >&2
|
||||
echo " labels, milestone, pr-reviews, branches, tree-sha, diff, subscription," >&2
|
||||
echo " attach-issue, attach-comment" >&2
|
||||
exit 1
|
||||
;;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue