Skip to content

A GitHub Action to run dotnet-format as part of your workflow

License

Notifications You must be signed in to change notification settings

karaoke-dev/dotnet-format

This branch is 1 commit ahead of, 142 commits behind xt0rted/dotnet-format:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

21ea792 · Jul 22, 2023
Jul 10, 2023
Mar 3, 2020
Jul 22, 2023
Mar 3, 2020
Mar 3, 2020
Feb 24, 2021
Mar 3, 2020
Mar 3, 2020
Oct 24, 2022
Mar 3, 2020
Feb 17, 2022
Apr 26, 2021
Jul 17, 2023
Apr 26, 2021
Jul 19, 2023

Repository files navigation

GitHub Action for dotnet-format

CI CodeQL

Run dotnet-format v3 as part of your workflow to report formatting errors or auto fix violations as part of your pull request workflow.

Usage

Running on push.

name: Format check on push
on: push
jobs:
  dotnet-format:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2

      - name: Add dotnet-format problem matcher
        uses: xt0rted/dotnet-format-problem-matcher@v1

      - name: Restore dotnet tools
        uses: xt0rted/dotnet-tool-restore@v1

      - name: Run dotnet format
        uses: xt0rted/dotnet-format@v1

Running on pull_request.

name: Format check on pull request
on: pull_request
jobs:
  dotnet-format:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v2

      - name: Add dotnet-format problem matcher
        uses: xt0rted/dotnet-format-problem-matcher@v1

      - name: Restore dotnet tools
        uses: xt0rted/dotnet-tool-restore@v1

      - name: Run dotnet format
        uses: xt0rted/dotnet-format@v1
        with:
          only-changed-files: "true"

Running on demand by pull request comment, triggered by the text /dotnet format.

ℹ The provided GITHUB_TOKEN will not trigger additional workflows. To push fixes back to the pull request branch you'll need to setup a secret with a Personal Access Token that has the repo scope.

name: Format on slash command
on:
  issue_comment:
    types: created
jobs:
  dotnet-format:
    runs-on: ubuntu-latest
    steps:
      - name: Check for command
        id: command
        uses: xt0rted/slash-command-action@v1
        continue-on-error: true
        with:
          command: dotnet
          reaction-type: "eyes"

      - name: Get branch info
        if: steps.command.outputs.command-name
        id: comment-branch
        uses: xt0rted/pull-request-comment-branch@v1
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}

      - name: Checkout repo
        if: steps.command.outputs.command-name
        uses: actions/checkout@v2
        with:
          ref: ${{ steps.comment-branch.outputs.ref }}
          persist-credentials: false

      - name: Restore dotnet tools
        if: steps.command.outputs.command-name
        uses: xt0rted/dotnet-tool-restore@v1

      - name: Run dotnet format
        if: steps.command.outputs.command-name && steps.command.outputs.command-arguments == 'format'
        id: format
        uses: xt0rted/dotnet-format@v1
        with:
          action: "fix"
          only-changed-files: true

      - name: Commit files
        if: steps.command.outputs.command-name && steps.command.outputs.command-arguments == 'format' && steps.format.outputs.has-changes == 'true'
        run: |
          git config --local user.name "github-actions[bot]"
          git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git commit -a -m 'Automated dotnet-format update

          Co-authored-by: ${{ github.event.comment.user.login }} <${{ github.event.comment.user.id }}+${{ github.event.comment.user.login }}@users.noreply.github.com>'

      - name: Push changes
        if: steps.command.outputs.command-name && steps.command.outputs.command-arguments == 'format' && steps.format.outputs.has-changes == 'true'
        uses: ad-m/github-push-action@v0.5.0
        with:
          branch: ${{ steps.comment-branch.outputs.ref }}
          github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

Token Permissions

If your repository is using token permissions, and you want to check only changed files, you'll need to set pull-request: read on either the workflow or the job.

Workflow Config

on: pull_request
permissions:
  pull-requests: read
jobs:
  dotnet-format:
    runs-on: ubuntu-latest
    steps:
      - name: Run dotnet format
        uses: xt0rted/dotnet-format@v1
        with:
          only-changed-files: "true"

Job Config

on: pull_request
jobs:
  dotnet-format:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    steps:
      - name: Run dotnet format
        uses: xt0rted/dotnet-format@v1
        with:
          only-changed-files: "true"

Options

Required

Name Allowed values Description
repo-token GITHUB_TOKEN (default) or PAT GITHUB_TOKEN token or a repo scoped PAT.
version 3 (default) Version of dotnet-format to use.
action check (default), fix Primary action dotnet-format should perform.

Optional

Name Allowed values Description
only-changed-files true, false (default) Only changed files in the current pull request should be formatted.
fail-fast true (default), false The job should fail if there's a formatting error. Only used with the check action.

Outputs

Name Description
has-changes If any files were found to have violations or had fixes applied. Will be a string value of true or false.

License

The scripts and documentation in this project are released under the MIT License

About

A GitHub Action to run dotnet-format as part of your workflow

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 63.5%
  • JavaScript 36.5%