csjones/lefthook-plugin
Fast and powerful Git hooks manager for Swift packages.
Features
- Fast Execution: Written in Go, lefthook can run commands in parallel.
- Powerful Configuration: Control execution and the files you pass to your commands.
- Swift Integration: Seamlessly integrates with Swift projects through the Swift Package Manager.
- Mint support: Run lefthook using mint, a package manager for Swift CLI tools.
Installation
Using Swift Package Manager plugin
To utilize the lefthook-plugin, include it in the target specification of your Swift Package:
// swift-tools-version: 5.6
import PackageDescription
let package = Package(
name: "YourPackageName",
dependencies: [
.package(url: "https://github.com/csjones/lefthook-plugin.git", exact: "2.1.6"),
],
targets: [
.executableTarget(name: "YourTargetName")
]
)This configuration ensures that SPM invokes the plugin, thereby integrating lefthook's capabilities into your Swift project.
Using mint
$ mint install csjones/lefthook-pluginCommands
After lefthook is installed in your Swift project, it's time to run it.
Using Swift Package Manager plugin
Invoke the plugin directly using the swift package plugin CLI:
swift package lefthook --helpRun lefthook install to initialize a lefthook.yml config and/or synchronize .git/hooks/ with your configuration.
swift package --disable-sandbox lefthook install[!IMPORTANT] The lefthook plugin necessitates the
--disable-sandboxflag with the Swift Package Manager due to its requirement for local document access to read files.
To execute the lefthook plugin within your package repository:
swift package --disable-sandbox lefthook run pre-commit[!NOTE] For a detailed understanding of lefthook's commands and their usage, refer to lefthook's official usage documentation.
Using mint
After running mint install csjones/lefthook-plugin to install the CLI tool, anytime you want to interact with lefthook, all you have to do is run mint run csjones/lefthook-plugin <command>. Example: mint run csjones/lefthook-plugin --help.
Configuration
Below is a sample configuration for lefthook:
pre-push:
commands:
1_test:
run: swift test
pre-commit:
commands:
1_swiftformat:
glob: "*.{swift}"
run: swift run swiftformat --config .swiftformat {all_files}
2_swiftlint:
glob: "*.{swift}"
run: swift run swiftlint --autocorrect --strict --no-cache
3_git:
run: git add .[!TIP] For a comprehensive understanding and more advanced configurations, refer to lefthook's official configuration documentation.
Community and Support
If you encounter any issues or have questions regarding the lefthook-plugin, please open an issue on GitHub. Contributions, suggestions, and feedback are always welcome!
Acknowledgments
Special thanks to the original lefthook project and its contributors for creating a powerful Git hooks manager.
Package Metadata
Repository: csjones/lefthook-plugin
Stars: 11
Forks: 0
Open issues: 0
Default branch: main
Primary language: swift
License: MIT
Topics: code-quality, git, git-hooks, hooks, hooks-manager, pre-commit, pre-push, swift, swift-package-manager, swift-plugin
README: README.md