Ormolu GitHub action
Go to file
2024-01-26 14:14:04 +01:00
.github Bump actions/checkout from 3 to 4 2023-09-12 17:18:52 +02:00
dist Add mode input 2023-07-04 17:11:56 +02:00
test-code Test on linux, mac, windows 2020-11-15 21:45:25 +01:00
.gitignore Initial commit 2020-10-12 23:14:36 +02:00
action.yml Upgrade to Node 20 2024-01-26 14:14:04 +01:00
CHANGELOG.md New release v14 2023-07-05 11:38:05 +02:00
index.js Add mode input 2023-07-04 17:11:56 +02:00
LICENSE.md Initial commit 2020-10-12 23:14:36 +02:00
package-lock.json Define inputs, do globbing for source files 2020-10-14 23:00:30 +02:00
package.json Adjustments due to the move to haskell-actions and renaming to run-ormolu 2023-04-05 11:50:25 +02:00
README.md Point out the absence of quotes around globs 2023-11-26 11:25:16 +01:00

Ormolu action

CI

This is Ormolu action that helps to ensure that your Haskell project is formatted with Ormolu. The action tries to find all Haskell source code files in your repository and fails if any of them is not formatted. In case of failure it prints the diff between the actual contents of the file and its formatted version.

Inputs

  • pattern Glob patterns that are used to find source files to format. It is possible to specify several patterns by putting each on a new line (notice no quotes around the globs).
  • respect-cabal-files Whether to try to locate Cabal files and take into account their default-extensions and default-language settings (default: true).
  • follow-symbolic-links Whether to follow symbolic links (default: true).
  • mode Specifies whether to simply "check" files for formatting, or modify the files "inplace".
  • extra-args Extra arguments to pass to Ormolu.
  • version The version number of Ormolu to use. Defaults to "latest".

Windows

If you are running a workflow on Windows, be wary of Git's core.autocrlf. Ormolu always converts CRLF endings to LF endings which may result in spurious diffs, so you probably want to disable core.autocrlf:

$ git config --global core.autocrlf false

Example usage

In the simple case all you need to do is to add this step to your job:

- uses: haskell-actions/run-ormolu@v14

However, if you are using a matrix, then it is more efficient to have a separate job for checking of formatting:

jobs:
  ormolu:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: haskell-actions/run-ormolu@v14
  build:
    runs-on: ubuntu-latest
    needs: ormolu
    ...

Here, the build job depends on ormolu and will not run unless ormolu passes.

Example which commits the formatted files:

jobs:
  ormolu:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - uses: haskell-actions/run-ormolu@v14
        with:
          mode: inplace
      - name: apply formatting changes
        uses: stefanzweifel/git-auto-commit-action@v4
        if: ${{ always() }}
        with:
          commit_message: automated ormolu commit