diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index a351fbc..373af0d 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -29,7 +29,7 @@ jobs: uses: https://gitea.jsc.idv.tw/composite-actions/codex@v${{ needs.release-tag-version.outputs.version }} with: oauth: ${{ secrets.CODEX_OAUTH }} - prompt: "請告訴我目前登入的帳號,只要電子郵件不要其他任何資訊" - - name: 檢查輸出 - if: ${{ steps.codex.outputs.text != vars.CODEX_EMAIL }} + prompt: "請自我介紹" + - name: 檢查登入帳號 + if: ${{ steps.codex.outputs.email != vars.CODEX_EMAIL }} run: exit 1 diff --git a/action.yml b/action.yml index 4a75eaf..b18fc6d 100644 --- a/action.yml +++ b/action.yml @@ -13,6 +13,9 @@ outputs: text: description: '輸出的文字' value: ${{ steps.codex.outputs.text }} + email: + description: '目前登入帳號的電子郵件(取自 OAuth id_token)' + value: ${{ steps.codex.outputs.email }} runs: using: 'composite' steps: @@ -38,11 +41,23 @@ runs: exit 1 fi - text="$(codex exec --skip-git-repo-check --model "$MODEL" "$PROMPT")" + text="$(codex exec --skip-git-repo-check -s danger-full-access --model "$MODEL" "$PROMPT")" printf '%s\n' "$text" + + # 從 OAuth id_token(JWT)解出目前登入帳號的 email;正規表示式對冒號後空白容錯 + auth_file="$HOME/.codex/auth.json" + id_token="$(grep -oE -m1 '"id_token"[[:space:]]*:[[:space:]]*"[^"]*"' "$auth_file" | sed -E 's/.*:[[:space:]]*"//; s/"$//' || true)" + payload="$(printf '%s' "$id_token" | cut -d. -f2 | tr '_-' '/+')" + case $((${#payload} % 4)) in + 2) payload="${payload}==" ;; + 3) payload="${payload}=" ;; + esac + email="$(printf '%s' "$payload" | base64 -d 2>/dev/null | grep -oE -m1 '"email"[[:space:]]*:[[:space:]]*"[^"]*"' | sed -E 's/.*:[[:space:]]*"//; s/"$//' || true)" + { echo 'text<> "$GITHUB_OUTPUT" shell: bash