auto-update-daily-20260202
1#!/usr/bin/env bash
2# Approve things
3
4set -eufo pipefail
5
6DEFAULT_PROJECTS="tektoncd/pipeline tektoncd/plumbing tektoncd/cli tektoncd/mcp-server"
7
8PROW=0
9MERGE=0
10FORCE=0
11COMMENT=""
12
13while getopts "hfpmc:" o; do
14 case "${o}" in
15 c)
16 s=${OPTARG}
17 COMMENT="$s"
18 ;;
19 p)
20 PROW=1
21 ;;
22 m)
23 MERGE=1
24 ;;
25 f)
26 FORCE=1
27 ;;
28 h)
29 help
30 exit 0
31 ;;
32 *)
33 echo "Invalid option"; help; exit 1;
34 ;;
35 esac
36done
37shift $((OPTIND-1))
38
39PROJECTS=${PROJECTS:=$DEFAULT_PROJECTS}
40
41for project in $PROJECTS; do
42 TO_APPROVE=$(gh pr --repo="${project}" list --json "number,title" | jq -r '.[] | ((.number | tostring) + " " + (.title))' | fzf --header "${project}" --multi --ansi --preview "gh pr checks --repo=${project} {1} --json 'name,state' | jq -r 'map(.state + \": \" + .name) | .[]'" | awk 'OFS="\t" {print $1}')
43
44 for pr in $TO_APPROVE; do
45 if [[ $PROW -eq 1 ]]; then
46 # if prow, we just review
47 gh pr review --repo="${project}" "$pr" --approve --body "/lgtm \
48$COMMENT"
49 else
50 gh pr review --repo="${project}" "$pr" --approve --body "$COMMENT"
51 fi
52 if [[ $MERGE -eq 1 ]]; then
53 MERGE_ARGS="--rebase --delete-branch"
54 if [[ $FORCE -eq 1 ]]; then
55 MERGE_ARGS="$MERGE_ARGS --admin"
56 else
57 MERGE_ARGS="$MERGE_ARGS --auto"
58 fi
59 gh pr merge --repo="${project}" "$MERGE_ARGS" --body "$COMMENT" "$pr"
60 fi
61 done
62done
63
64function help() {
65 echo "HEEELLPPP"
66}