-
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.5 KB
/
create_pr.sh
File metadata and controls
executable file
·134 lines (116 loc) · 3.5 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,Software Architecture: The Hard Parts
소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석"
MILESTONE="Software Architecture: The Hard Parts"
# 사전 검증
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