Add formatbot #1
This file contains 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: Format PR | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
jobs: | |
format: | |
name: Format code | |
runs-on: ubuntu-latest | |
if: github.event.pull_request.draft == false | |
steps: | |
- name: Determine if fork | |
id: check_fork | |
run: | | |
if [ "${{ github.event.pull_request.head.repo.full_name }}" = "${{ github.repository }}" ]; then | |
echo "is_fork=false" >> $GITHUB_OUTPUT | |
else | |
echo "is_fork=true" >> $GITHUB_OUTPUT | |
fi | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
token: ${{ steps.check_fork.outputs.is_fork == 'true' && secrets.GITHUB_TOKEN || secrets.TSCIRCUIT_BOT_GITHUB_TOKEN }} | |
- name: Setup bun | |
uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: latest | |
- name: Get @biomejs/biome version | |
id: get-biome-version | |
run: echo "BIOME_VERSION=$(node -p "require('./package.json').devDependencies['@biomejs/biome']")" >> $GITHUB_OUTPUT | |
- name: Install @biomejs/biome | |
run: bun install @biomejs/biome@${{ steps.get-biome-version.outputs.BIOME_VERSION }} | |
- name: Run Formatter and autofix | |
if: steps.check_fork.outputs.is_fork == 'false' | |
run: biome format . --write | |
- name: Format Check (cannot autofix against forks) | |
if: steps.check_fork.outputs.is_fork == 'true' | |
run: biome format . | |
- name: Restore lock files | |
if: steps.check_fork.outputs.is_fork == 'false' | |
run: | | |
git checkout -- *lock.json || true | |
git checkout -- *.lock || true | |
git checkout -- *.lockb || true | |
- name: Commit changes | |
if: steps.check_fork.outputs.is_fork == 'false' | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: "formatbot: Automatically format code" | |
branch: ${{ github.head_ref }} | |
commit_user_name: tscircuitbot | |
commit_user_email: [email protected] | |
commit_author: tscircuitbot <[email protected]> |