251210 : [BOJ 9470] Strahler μμ #1037
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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="μλ§" ;; | |
| "3veryDay") 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" |