|
| 1 | +#!/usr/bin/env bash |
| 2 | +# Создаёт GitHub Project (v2) у владельца, линкует репозиторий BirdLense-Hub, |
| 3 | +# добавляет поле «Поток» (Backlog → … → Done) поверх стандартного Status. |
| 4 | +# |
| 5 | +# Требуется один раз расширить gh-токен: |
| 6 | +# gh auth refresh -s project -s read:project |
| 7 | +# |
| 8 | +set -euo pipefail |
| 9 | + |
| 10 | +OWNER="${GITHUB_PROJECT_OWNER:-Gfermoto}" |
| 11 | +REPO_FULL="${GITHUB_REPO:-Gfermoto/BirdLense-Hub}" |
| 12 | +PROJECT_TITLE="${GITHUB_PROJECT_TITLE:-BirdLense Hub — Roadmap}" |
| 13 | + |
| 14 | +if ! gh project list --owner "$OWNER" --limit 1 >/dev/null 2>&1; then |
| 15 | + echo "gh не может читать Projects (нужны scope project / read:project). Выполните:" |
| 16 | + echo " gh auth refresh -s project -s read:project" |
| 17 | + echo "Затем снова запустите этот скрипт." |
| 18 | + exit 1 |
| 19 | +fi |
| 20 | + |
| 21 | +exists_json=$(gh project list --owner "$OWNER" --format json --limit 50) |
| 22 | +proj_num=$(echo "$exists_json" | jq -r --arg t "$PROJECT_TITLE" '.projects[] | select(.title == $t) | .number' | head -1) |
| 23 | + |
| 24 | +if [[ -z "$proj_num" || "$proj_num" == "null" ]]; then |
| 25 | + echo "Создаю проект «$PROJECT_TITLE»…" |
| 26 | + create_out=$(gh project create --owner "$OWNER" --title "$PROJECT_TITLE" --format json) |
| 27 | + proj_num=$(echo "$create_out" | jq -r '.number') |
| 28 | + echo "Создан проект #$proj_num" |
| 29 | +else |
| 30 | + echo "Проект «$PROJECT_TITLE» уже есть (#$proj_num)" |
| 31 | +fi |
| 32 | + |
| 33 | +echo "Линкую $REPO_FULL…" |
| 34 | +gh project link "$proj_num" --owner "$OWNER" --repo "$REPO_FULL" 2>/dev/null || true |
| 35 | + |
| 36 | +# Доп. поле для канбана (рядом со стандартным полем Status в Projects) |
| 37 | +echo "Добавляю поле «Поток» (если ещё нет — при дубликате будет ошибка, её можно игнорировать)…" |
| 38 | +gh project field-create "$proj_num" --owner "$OWNER" \ |
| 39 | + --name "Поток" \ |
| 40 | + --data-type "SINGLE_SELECT" \ |
| 41 | + --single-select-options "Backlog,Ready,In progress,In review,Done" 2>/dev/null \ |
| 42 | + || echo "(поле «Поток» уже есть или не удалось создать — проверьте в UI проекта)" |
| 43 | + |
| 44 | +echo |
| 45 | +echo "Готово. Открыть в браузере:" |
| 46 | +gh project view "$proj_num" --owner "$OWNER" --web 2>/dev/null || echo " gh project view $proj_num --owner $OWNER --web" |
0 commit comments