-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathcreate_pr.sh
More file actions
executable file
·134 lines (116 loc) · 3.44 KB
/
Copy pathcreate_pr.sh
File metadata and controls
executable file
·134 lines (116 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
set -euo pipefail
REVIEWERS="TaeHyoungKwon,jongfeel,ymkim97,tttghost,dhlee3994,GeunJuLEE,benscookie,chichoon"
ASSIGNEE="@me"
PROJECT="2026 Academic Conference"
# 이부분을 수동으로 변경해서 사용
LABELS="2026,개발자 원칙
개발자 원칙 - 확장판, 테크 리더 9인이 말하는 더 나은 개발자로 살아가는 원칙과 철학"
MILESTONE="개발자 원칙"
# 사전 검증
check_prerequisites() {
if ! command -v gh &> /dev/null; then
echo "오류: GitHub CLI(gh)가 설치되어 있지 않습니다."
echo "설치 방법: brew install gh"
exit 1
fi
if ! git rev-parse --git-dir &> /dev/null; then
echo "오류: Git 저장소가 아닙니다."
exit 1
fi
if ! gh auth status &> /dev/null; then
echo "오류: GitHub에 로그인되어 있지 않습니다."
echo "로그인: gh auth login"
exit 1
fi
}
# PR 제목 입력 및 검증
get_title() {
while true; do
read -p "PR 제목을 입력하세요: " TITLE
if [ -n "$TITLE" ]; then
break
fi
echo "제목은 필수입니다. 다시 입력해주세요."
done
}
# Issue ID 입력 및 검증
get_issue_id() {
while true; do
read -p "Issue ID를 입력하세요 (필수): " ISSUE_ID
if [ -n "$ISSUE_ID" ]; then
# 숫자 검증
if [[ "$ISSUE_ID" =~ ^[0-9]+$ ]]; then
break
else
echo "오류: Issue ID는 숫자여야 합니다. 다시 입력해주세요."
fi
else
echo "Issue ID는 필수입니다. 다시 입력해주세요."
fi
done
}
# PR 본문 입력 (다중 라인 지원)
get_body() {
echo "PR 본문을 입력하세요 (여러 줄 입력 가능, 입력 완료 후 Ctrl+D):"
BODY=$(cat)
if [ -z "$BODY" ]; then
read -p "본문이 비어있습니다. 계속하시겠습니까? (y/N): " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
exit 0
fi
fi
# Issue 연결 키워드 자동 추가
if [ -n "$BODY" ]; then
BODY="${BODY}"$'\n\n'"Closes #${ISSUE_ID}"
else
BODY="Closes #${ISSUE_ID}"
fi
}
# Dry-run 미리보기
dry_run() {
echo "=== PR 생성 미리보기 ==="
echo "제목: $TITLE"
echo "연결된 Issue: #${ISSUE_ID}"
echo "본문:"
echo -e "$BODY"
echo "리뷰어: $REVIEWERS"
echo "담당자: $ASSIGNEE"
echo "라벨: $LABELS"
echo "프로젝트: $PROJECT"
echo "마일스톤: $MILESTONE"
echo "========================"
}
# 메인 실행
main() {
check_prerequisites
get_title
get_issue_id
get_body
# Dry-run 확인
read -p "PR을 생성하기 전에 미리보기를 보시겠습니까? (Y/n): " show_preview
if [[ ! "$show_preview" =~ ^[Nn]$ ]]; then
dry_run
read -p "위 내용으로 PR을 생성하시겠습니까? (Y/n): " confirm
if [[ "$confirm" =~ ^[Nn]$ ]]; then
echo "PR 생성이 취소되었습니다."
exit 0
fi
fi
# PR 생성
echo "PR을 생성하는 중..."
if gh pr create \
-t "$TITLE" \
-b "$BODY" \
-r "$REVIEWERS" \
-a "$ASSIGNEE" \
-l "$LABELS" \
-m "$MILESTONE" \
-p "$PROJECT"; then
echo "✅ PR이 성공적으로 생성되었습니다."
else
echo "❌ PR 생성에 실패했습니다."
exit 1
fi
}
main