-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate-pr.sh
More file actions
executable file
·74 lines (59 loc) · 2.39 KB
/
create-pr.sh
File metadata and controls
executable file
·74 lines (59 loc) · 2.39 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
#!/bin/bash
# 使用方法: ./create-pr.sh "Current Problem URL" "Problem Number (optional)"
# 例: ./create-pr.sh "https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/" "62"
#
# 前提: 既にブランチが作成されており、そのブランチで作業中であること
CURRENT_PROBLEM_URL=$1
LANGUAGE=${2:-Python}
if [ -z "$CURRENT_PROBLEM_URL" ]; then
echo "使用方法: ./create-pr.sh <現在の問題URL> [Arai60通し番号]"
echo "例: ./create-pr.sh \"https://leetcode.com/problems/two-sum/description/\" \"47\""
exit 1
fi
# URLから問題名を抽出する関数
extract_problem_name() {
local url=$1
# URLから "two-sum" のような部分を抽出
local slug=$(echo "$url" | sed -n 's|.*/problems/\([^/]*\).*|\1|p')
# ハイフンをスペースに変換し、各単語の最初の文字を大文字に
local title=$(echo "$slug" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) tolower(substr($i,2))}1')
echo "$title"
}
CURRENT_BRANCH=$(git branch --show-current)
if [ "$CURRENT_BRANCH" = "main" ] || [ "$CURRENT_BRANCH" = "master" ]; then
echo "エラー: mainブランチから実行しています。"
echo "問題用のブランチを作成してから実行してください。"
exit 1
fi
echo "現在のブランチ: $CURRENT_BRANCH"
# 現在の問題名を抽出
CURRENT_PROBLEM_TITLE=$(extract_problem_name "$CURRENT_PROBLEM_URL")
echo "現在の問題: $CURRENT_PROBLEM_TITLE"
echo "PRボディを作成中..."
cat > .github/pull_request_template.md << EOF
[${CURRENT_PROBLEM_TITLE}](${CURRENT_PROBLEM_URL})
EOF
echo "リモートにプッシュ中..."
git push -u origin "$CURRENT_BRANCH"
echo "PRを作成中..."
PR_URL=$(gh pr create \
--base main \
--head "$CURRENT_BRANCH" \
--title "${CURRENT_PROBLEM_TITLE}" \
--body "${CURRENT_PROBLEM_URL}")
PR_NUMBER=$(echo "$PR_URL" | grep -o '[0-9]*$')
git restore .github/pull_request_template.md
echo "PR作成完了! ${PR_URL}"
# レビュー依頼コメントを生成
TITLE_LINE="${CURRENT_PROBLEM_TITLE}"
echo ""
echo "=== レビュー依頼コメント (コピー用) ====================="
cat << EOF
お疲れ様です。
${TITLE_LINE}に取り組みました。
お手隙の際にレビューをお願いいたします。
問題: ${CURRENT_PROBLEM_URL}
PR: ${PR_URL}
言語: ${LANGUAGE}
EOF
echo "========================================================="