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.
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.respect-cabal-files
Whether to try to locate Cabal files and take into account theirdefault-extensions
anddefault-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"
.
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
In the simple case all you need to do is to add this step to your job:
- uses: haskell-actions/run-ormolu@v13
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@v13
build:
runs-on: ubuntu-latest
needs: ormolu
...
Here, the build
job depends on ormolu
and will not run unless ormolu
passes.
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