Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sethreno/regitlint
Low friction code formatting for .net projects
https://github.com/sethreno/regitlint
Last synced: 18 days ago
JSON representation
Low friction code formatting for .net projects
- Host: GitHub
- URL: https://github.com/sethreno/regitlint
- Owner: sethreno
- License: mit
- Created: 2019-08-23T21:35:53.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-11T07:22:36.000Z (4 months ago)
- Last Synced: 2024-10-13T07:06:49.405Z (about 1 month ago)
- Language: C#
- Homepage:
- Size: 130 KB
- Stars: 55
- Watchers: 4
- Forks: 11
- Open Issues: 5
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# ReGitLint
Integrates the free
[CleanupCode](https://www.jetbrains.com/help/resharper/CleanupCode.html)
command line tool from ReSharper Command Line Tools with git to provide
low friction .net linting for teams without requiring everyone to install
[ReSharper](https://www.jetbrains.com/resharper/).[CleanupCode](https://www.jetbrains.com/help/resharper/CleanupCode.html)
supports formatting c# as well as vb.net, c++, html, asp.net, razor,
javascript, typescript, css, xml, & xaml.ReGitLint puts and end to style wars by making it easy to add git hooks
and CI checks to ensure code is formatted consistenlty. Your team will
be holding hands and singing kum ba yah in no time!Formatting options are specified in
[.editorconfig](https://editorconfig.org/) so everyone can use their
favorite editor. There are many formatting options supported... Here's
[a reference](https://www.jetbrains.com/help/resharper/EditorConfig_Generalized.html)# Why CleanupCode instead of the built in dotnet format?
`dotnet format` is cool, but currently doesn't support .editorconfig
max_line_length. For curmudgeons like me this is a deal breaker. There's an
[open issue](https://github.com/dotnet/format/issues/246) for it but so far
no fix.## Quick Start
If you don't already have a tool manifest in your project
dotnet new tool-manifest
Install jb & regitlint
dotnet tool install JetBrains.ReSharper.GlobalTools
dotnet tool install ReGitLintNow to clean up the whole solution run
dotnet regitlint
To keep everything formatted you can add a pre-commit hook and build step.
Don't panic!!! ReGitLint has options to format only what's changed so it's fast!Add the following to .git/hooks/pre-commit
#!/bin/sh
dotnet regitlint -f staged --fail-on-diffReGitLint will run
[CleanupCode](https://www.jetbrains.com/help/resharper/CleanupCode.html) to
format all staged files. If they don't match
[.editorconfig](https://editorconfig.org/) the commit will fail and you'll see a
message like:!!!! Process Aborted !!!!
Code formatter changed the following files:
* Directory/SomeCode.csTo enforce code formatting on the build server add this to your build script
dotnet tool restore
dotnet regitlint -f commits -a $env.GIT_PREVIOUS_SUCCESSFUL_COMMIT -b $env.GIT_COMMIT --fail-on-diff --print-diffOr if you use jenkins you can just add this
dotnet tool restore
dotnet regitlint --jenkinsThis will only format the files changed between the commit that triggered the
build and the commit that triggered the last successful build. This saves a
lot of time when compared to formatting all files on a large project.## More Examples:
* Run cleanup on entire solution
`dotnet regitlint`
* Format only, don't run a full code cleanup
`dotnet regitlint --format-only`
* Clean up all staged files
`dotnet regitlint -f staged`
* Clean up all modified files
`dotnet regitlint -f modified`
* Clean up only c# files
`dotnet regitlint -p "**/*.cs"`
* Clean up only js files
`dotnet regitlint -p "**/*.js"`
* Clean up all files modified by commit 3796556
`dotnet regitlint -f commits -a 3796556`
* Clean up all files modified between commit 6708090 and 3796556
`dotnet regitlint -f commits -a 6708090 -b 3796556`
* Clean up all files modified by the last four commits
`dotnet regitlint -f commits -a head^^^^ -b head`
* Clean up all files modified by the last four commits, including staged and unstaged changes
`dotnet regitlint -f staged,modified,commits -a head^^^^ -b head`
* Clean up staged files, return 1 if files change. Handy for git hooks.
`dotnet regitlint -f staged --fail-on-diff`
* Clean up files between commits and return 1 if files change. Handy for
enforcing code formatting on build server.`dotnet regitlint -f commits -a 6708090 -b 3796556 --fail-on-diff`
* Enforce code formatting on jenkins
`dotnet regitlint --jenkins`
* Enforce code formatting on other build servers
`dotnet regitlint -f commits -a $env.GIT_PREVIOUS_SUCCESSFUL_COMMIT -b $env.GIT_COMMIT --fail-on-diff --print-diff`
* Pass options through to jb cleanupcode
`dotnet regitlint --jb --toolset=16.0 --jb --exclude="**/*.html"`
----
If you've found ReGitLint helpful you can
[buy me a coffee](https://www.buymeacoffee.com/sethreno) to say thanks.
Happy linting!