diff --git a/tools/gitea.sh b/tools/gitea.sh index c9c8767..a31d21b 100755 --- a/tools/gitea.sh +++ b/tools/gitea.sh @@ -12,6 +12,9 @@ # gitea.sh wiki-get / # 印出 wiki 頁 markdown;不存在時 exit 4 # gitea.sh wiki-put / # 建立或更新 wiki 頁(內容取自檔案) # gitea.sh pr-create / <body-file> # 建立 PR,印出 PR URL +# gitea.sh pr-depend <owner>/<repo> <pr-index> <dep-owner>/<dep-repo> <dep-index> +# 把 PR 掛上前置 PR 依賴;依賴未關閉前 Gitea 會阻擋合併 +# gitea.sh repo-set <owner>/<repo> <description> [website] # 設定 repo 描述與網頁 # gitea.sh api <METHOD> <path> [json-file] # 原始 API 呼叫(path 以 /repos/... 起始) # 環境變數: GITEA_HOST(例 https://gitea.jsc.idv.tw)、GITEA_TOKEN set -eu @@ -117,6 +120,34 @@ print(json.dumps({"head":sys.argv[1],"base":sys.argv[2],"title":sys.argv[3], ' "$head" "$base" "$title" "$body_file" > "$tmp" req POST "/repos/$or/pulls" "$tmp" | json_field html_url rm -f "$tmp" ;; + pr-depend) + or="${1:?owner/repo required}"; idx="${2:?pr index required}" + dep_or="${3:?dep owner/repo required}"; dep_idx="${4:?dep index required}" + tmp=$(mktemp) + python3 -c ' +import json,sys +o,r=sys.argv[1].split("/",1) +print(json.dumps({"owner":o,"repo":r,"index":int(sys.argv[2])})) +' "$dep_or" "$dep_idx" > "$tmp" + if ! out=$(req POST "/repos/$or/issues/$idx/dependencies" "$tmp"); then + rm -f "$tmp"; printf '%s\n' "$out" >&2; exit 4 + fi + rm -f "$tmp" + echo "OK $or#$idx depends on $dep_or#$dep_idx" ;; + repo-set) + or="${1:?owner/repo required}"; desc="${2:?description required}"; site="${3:-}" + tmp=$(mktemp) + python3 -c ' +import json,sys +b={"description":sys.argv[1]} +if len(sys.argv)>2 and sys.argv[2]: b["website"]=sys.argv[2] +print(json.dumps(b)) +' "$desc" "$site" > "$tmp" + if ! out=$(req PATCH "/repos/$or" "$tmp"); then + rm -f "$tmp"; printf '%s\n' "$out" >&2; exit 4 + fi + rm -f "$tmp" + echo "OK $or" ;; api) method="${1:?METHOD}"; path="${2:?path}"; body="${3:-}" req "$method" "$path" $body ;;