actions

Actions for installing and running Restyled

AGPL-3.0 License

Stars
3
Committers
3

Restyled Actions

[!IMPORTANT] Before using Restyled as a GitHub Action, make sure you prevent any previous hosted installation from running. Otherwise, they may fight over the restyled branch. This can be done by uninstalling the GitHub App entirely, or configuring it for specific repositories and excluding the one where you plan to use GitHub Actions.

Usage

Features:

  1. Restyle a Pull Request
  2. Print instructions to apply locally with git am
  3. Maintain a sibling PR, if the original was not a Fork
  4. Apply the restyled label and request review from the author
  5. Fail the PR if differences were found
name: Restyled

on:
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  restyled:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.ref }}

      - uses: restyled-io/actions/setup@v4
      - id: restyler
        uses: restyled-io/actions/run@v4
        with:
          fail-on-differences: true

      - if: |
          !cancelled() &&
          steps.restyler.outputs.success == 'true' &&
          github.event.pull_request.head.repo.full_name == github.repository
        uses: peter-evans/create-pull-request@v6
        with:
          base: ${{ steps.restyler.outputs.restyled-base }}
          branch: ${{ steps.restyler.outputs.restyled-head }}
          title: ${{ steps.restyler.outputs.restyled-title }}
          body: ${{ steps.restyler.outputs.restyled-body }}
          labels: "restyled"
          reviewers: ${{ github.event.pull_request.user.login }}
          delete-branch: true

Workflow Permissions

The Restyled actions themselves require no permissions. However, contents:read is required for actions/checkout and pull-requests:write is required for peter-evans/create-pull-request, which are both used in the example above.

Default permissions for workflows can be adjusted in your repository settings, or a permissions key can be used in the workflow itself. For more details, see the documentation.

Cleaning up Closed PRs

If you close a PR without incorporating Restyled's fixes, the Restyled PR will remain open. To address this, you can do the following:

First, set an explicit types key for which events are handled, so you can include closed:

 on:
   pull_request:
+    types:
+      - opened
+      - closed
+      - reopened
+      - synchronize

Second, make your normal restyled job not run for that event:

 jobs:
   restyled:
+    if: ${{ github.event.action != 'closed' }}
     runs-on: ubuntu-latest

Finally, add a new job that does.

It sets up and runs the CLI, which will skip the PR because it's closed, but it will provide the necessary restyled-head output, which you can use to close the PR with gh:

restyled-cleanup:
  if: ${{ github.event.action == 'closed' }}
  runs-on: ubuntu-latest
  steps:
    - uses: restyled-io/actions/setup@v4
    - id: restyler
      uses: restyled-io/actions/run@v4
    - run: gh --repo "$REPO" pr close "$BRANCH" --delete-branch || true
      env:
        REPO: ${{ github.repository }}
        BRANCH: ${{ steps.restyler.outputs.restyled-head }}
        GH_TOKEN: ${{ github.token }}

License

This software is licensed AGPLv3. See COPYING.

Related Projects