-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (110 loc) Β· 4.73 KB
/
Copy pathpr-action.yml
File metadata and controls
132 lines (110 loc) Β· 4.73 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
name: PR Emoji & Notion Update by Author
on:
pull_request:
types: [opened, edited, reopened]
jobs:
update-notion-checkbox:
runs-on: ubuntu-latest
steps:
- name: Check PR title and body, then update author-specific checkbox
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
NOTION_DATABASE_ID: ${{ secrets.NOTION_DATABASE_ID }}
run: |
echo "π μμ: PR μ λͺ©κ³Ό λ³Έλ¬Έ νμΈ"
PR_TITLE=$(jq -r .pull_request.title "$GITHUB_EVENT_PATH")
PR_BODY=$(jq -r .pull_request.body "$GITHUB_EVENT_PATH")
PR_AUTHOR=$(jq -r .pull_request.user.login "$GITHUB_EVENT_PATH")
echo "π PR Title: $PR_TITLE"
echo "π€ μμ±μ: $PR_AUTHOR"
# β
λ° β μ΄λͺ¨μ§ κ°μ§
HAS_CHECK=$(echo "$PR_BODY" | grep -q "β
" && echo "yes" || echo "no")
HAS_CROSS=$(echo "$PR_BODY" | grep -q "β" && echo "yes" || echo "no")
if [[ "$HAS_CHECK" == "yes" && "$HAS_CROSS" == "yes" ]]; then
CHECKBOX_VALUE=false
echo "β οΈ λ λ€ ν¬ν¨ β false"
elif [[ "$HAS_CROSS" == "yes" ]]; then
CHECKBOX_VALUE=false
echo "β ν¬ν¨ β false"
elif [[ "$HAS_CHECK" == "yes" ]]; then
CHECKBOX_VALUE=true
echo "β
ν¬ν¨ β true"
else
echo "β οΈ μ΄λͺ¨μ§κ° μμ΄ μ€ν΅ν©λλ€."
exit 0
fi
# μμ±μ β 체ν¬λ°μ€ νλ λ§€ν
case "$PR_AUTHOR" in
"Eunjin3395") FIELD_NAME="μμ§" ;;
"KII1ua") FIELD_NAME="μ±μ€" ;;
"dlchdaud123") FIELD_NAME="μ΄λͺ
" ;;
"sksn12") FIELD_NAME="μλ§" ;;
"alirz-pixel") FIELD_NAME="λ¬Έν" ;;
"esc10946") FIELD_NAME="νΈμ€" ;;
"pinkkj") FIELD_NAME="μ ν¬" ;;
"sunha20") FIELD_NAME="μ ν" ;;
*)
echo "β μ μ μλ μμ±μ: $PR_AUTHOR"
exit 1
;;
esac
echo "π§© μ μ© λμ νλ: $FIELD_NAME"
# PR μ λͺ©μμ BOJ λ¬Έμ λ²νΈ μΆμΆ
PROBLEM_NO=$(echo "$PR_TITLE" | grep -oE '\[BOJ [0-9]+\]' | grep -oE '[0-9]+')
if [ -z "$PROBLEM_NO" ]; then
echo "β PR μ λͺ©μμ λ¬Έμ λ²νΈλ₯Ό μ°Ύμ μ μμ΅λλ€."
exit 1
fi
echo "π’ μΆμΆλ λ¬Έμ λ²νΈ: $PROBLEM_NO"
# Notion DBμμ λ¬Έμ λ²νΈ νλ == λ¬Έμ λ²νΈμΈ νμ΄μ§ κ²μ
PAGE_ID=$(curl -s -X POST "https://api.notion.com/v1/databases/$NOTION_DATABASE_ID/query" \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2022-06-28" \
-H "Content-Type: application/json" \
--data '{
"filter": {
"property": "λ¬Έμ λ²νΈ",
"title": {
"equals": "'"$PROBLEM_NO"'"
}
}
}' | jq -r '.results[0].id')
if [ "$PAGE_ID" = "null" ] || [ -z "$PAGE_ID" ]; then
echo "β Notionμμ λ¬Έμ λ²νΈ $PROBLEM_NOμ ν΄λΉνλ νμ΄μ§λ₯Ό μ°Ύμ μ μμ΅λλ€."
exit 1
fi
echo "β
λμ Notion νμ΄μ§ ID νμΈλ¨"
# ν΄λΉ 체ν¬λ°μ€μ μ μΆ μ²΄ν¬λ°μ€ λͺ¨λ μ
λ°μ΄νΈ
SUBMIT_FIELD="μ μΆ$FIELD_NAME"
echo "π¦ λμ μ μΆ νλ: $SUBMIT_FIELD"
JSON_BODY=$(cat <<EOF
{
"properties": {
"$FIELD_NAME": {
"checkbox": $CHECKBOX_VALUE
},
"$SUBMIT_FIELD": {
"checkbox": true
}
}
}
EOF
)
# π JSON λ³Έλ¬Έ μΆλ ₯
echo "π€ Notion PATCH μμ² λ³Έλ¬Έ:"
echo "$JSON_BODY"
# π PATCH μμ² μ μ‘
curl -s -o /dev/null -w "%{http_code}" -X PATCH "https://api.notion.com/v1/pages/$PAGE_ID" \
-H "Authorization: Bearer $NOTION_API_KEY" \
-H "Notion-Version: 2022-06-28" \
-H "Content-Type: application/json" \
--data "$JSON_BODY"
echo "π Notion μ
λ°μ΄νΈ μλ£!!: $FIELD_NAME β $CHECKBOX_VALUE"
echo "π― Lambda API νΈμΆ μμ"
curl -s -o lambda_response.json -w "%{http_code}" -X POST https://p7vk9p47d0.execute-api.ap-northeast-2.amazonaws.com/api/save \
-H "Content-Type: application/json" \
-d "{\"prAuthor\": \"$PR_AUTHOR\", \"problemId\": \"$PROBLEM_NO\"}"
echo "π¬ Lambda μλ΅:"
cat lambda_response.json
echo "π Lambda API νΈμΆ μλ£!!: $PR_AUTHOR, $PROBLEM_NO"