π A GitHub Action to check, enforce & fix EditorConfig style violations
Table of Contents
Table of Contents
From the EditorConfig website:
EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs. The EditorConfig project consists of a file format for defining coding styles and a collection of text editor plugins that enable editors to read the file format and adhere to defined styles. EditorConfig files are easily readable and they work nicely with version control systems.
Checkout this project's .editorconfig
file here. However, to use this GitHub Action, your project
should define your own .editorconfig
.
This project uses eclint by Jed Mao (@jedmao) to lint your project. eclint is also released under an MIT license.
Visit the EditorConfig-Action GitHub Marketplace page to get started. Use a tagged release or the master
version of this GitHub action by creating your own .github/main.workflow
file and adding a on = "push"
and/or
on = "pull_request"
workflow
that resolves
an action
uses = zbeekman/EditorConfig-Action[@ref]
.
Please see [the GitHub Actions documentation] for additional information.
Check Conformance of Pushed Commits with .editorconfig
To ensure your repository does not violate your project's .editorconfig
file, you may use the
following workflow:
workflow "PR Audit" {
on = "pull_request"
resolves = ["EC Audit PR"]
}
action "EC Audit PR" {
uses = "zbeekman/[email protected]"
# secrets = ["GITHUB_TOKEN"] # Will be needed for fixing errors
env = {
ALWAYS_LINT_ALL_FILES = "false" # This is the default
}
}
workflow "Push Audit" {
on = "push"
resolves = ["EC Audit Push"]
}
action "EC Audit Push" {
uses = "zbeekman/[email protected]"
# secrets = ["GITHUB_TOKEN"] # Will be needed for fixing errors
env = {
EC_FIX_ERROR = "false" # not yet implemented
ALWAYS_LINT_ALL_FILES = "true" # Might be slow for large repos
}
}
If you omit the ALWAYS_LINT_ALL_FILES
variable or it is set to false
then only files changed in
the pushed commits will be linted. If you explicitly set this to true
then every file in the
repository will be checked. Depending on the size of the repository, this may be a bad idea.
For protected branches, it is best to set the required action to be the one created with the on = "pull_request"
,
e.g., "EC Audit Push"
above, since PRs from forks will not trigger a local push event.
Features currently in development or being considered for addition include:
- Check only files touched by commits included in the current push
- Always check all files
- Pull Request linting (lint all files in pull request) and provide PR status
- Automatically apply fixes using
eclint fix
- Ability to pass search patterns to
git ls-files
for enumerating files to check - Ability to override project
.editorconfig
or use without an.editorconfig
viaeclint
's property override flags - Pass patterns of files to ignore
EditorConfig Resources
- π eclint usage : https://github.com/jedmao/eclint#features
- π EditorConfig website : https://editorconfig.org
- π EditorConfig wiki : https://github.com/editorconfig/editorconfig/wiki
- ποΈ EditorConfig properties : https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
- π€ EditorConfig FAQs : https://github.com/editorconfig/editorconfig/wiki/FAQ
- βοΈ EditorConfig with your editor : https://editorconfig.org/#download
- EditorConfig GitHub : https://github.com/editorconfig/editorconfig
- π¦ EditorConfig on twitter : https://twitter.com/EditorConfig