{"id":18360984,"url":"https://github.com/shibapm/komondor","last_synced_at":"2025-04-13T05:04:44.738Z","repository":{"id":33506467,"uuid":"158900331","full_name":"shibapm/Komondor","owner":"shibapm","description":"Git Hooks for Swift projects 🐩","archived":false,"fork":false,"pushed_at":"2023-03-02T19:05:18.000Z","size":314,"stargazers_count":555,"open_issues_count":23,"forks_count":32,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-13T05:04:30.896Z","etag":null,"topics":["git-hooks","husky","swift","swift-package-manager"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shibapm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-11-24T03:50:45.000Z","updated_at":"2025-02-12T03:58:50.000Z","dependencies_parsed_at":"2022-08-07T22:00:24.901Z","dependency_job_id":"7edb762a-9219-4100-96a5-f146947af4ec","html_url":"https://github.com/shibapm/Komondor","commit_stats":{"total_commits":82,"total_committers":16,"mean_commits":5.125,"dds":0.7439024390243902,"last_synced_commit":"3734b0e8b62cc9a59c487eb0796905c441bf9c10"},"previous_names":["orta/komondor"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibapm%2FKomondor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibapm%2FKomondor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibapm%2FKomondor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibapm%2FKomondor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shibapm","download_url":"https://codeload.github.com/shibapm/Komondor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665748,"owners_count":21142123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git-hooks","husky","swift","swift-package-manager"],"created_at":"2024-11-05T22:30:43.749Z","updated_at":"2025-04-13T05:04:44.712Z","avatar_url":"https://github.com/shibapm.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href='https://www.akc.org/dog-breeds/komondor/'\u003e\u003cimg width =\"100%\" src=\"./komondor.jpg\"\u003e\u003ca/\u003e\u003c/p\u003e\n\n# Komondor\n\nGit Hook automation for Swift and Xcode projects. A port of [Husky](https://github.com/typicode/husky) to Swift.\n\n### TL:DR\n\n1. Add or amend a `Package.swift`\n2. Add this dependency `.package(url: \"https://github.com/shibapm/Komondor.git\", from: \"1.0.0\"),`\n3. Run the install command: `swift run komondor install`\n4. Add a config section to your [`Package.swift`](https://github.com/shibapm/Komondor/blob/master/Package.swift)\n\nThen you'll get git-hooks consolidated and centralized so that everyone can work with the same tooling.\n\n### Why?\n\n\u003e If you care about something, you should automate it.\n\nGit Hooks like what Komondor provides gives you more surface area for per-project automation. Komondor provides\nan easily understood way to see how all the git automation touch-points in your project will come together. These\nhooks allow for much faster feedback during development and let different team-members to use different tools\nbut still have the same bar of quality.\n\nFor example, adding [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) to your `pre-commit` hook means that\nno-one will ever need to discuss formatting in code review again. Perfect. It won't slow down your Xcode builds,\nbecause it lives outside of your project and you can verify it on CI if you'd like to be 100% that everyone conforms.\n\nAnother example, running tests before pushing - this means you don't have to come back 10-15m later once CI has told\nyou that you have a failing test. This moves more validation to a point where you are still in-context.\n\n### An Example\n\nThis is from [the repo](https://github.com/shibapm/Komondor/blob/master/Package.swift) you're looking at:\n\n```swift\n#if canImport(PackageConfig)\n    import PackageConfig\n\n    let config = PackageConfiguration([\n        \"komondor\": [\n            \"pre-push\": \"swift test\",\n            \"pre-commit\": [\n                \"swift test\",\n                \"swift run swiftformat .\",\n                \"swift run swiftlint autocorrect --path Sources/\",\n                \"git add .\",\n            ],\n        ],\n    ]).write()\n#endif\n```\n\nSee more about the [config here](./Documentation/config.md).\n\n### Getting Set up\n\n| [On a SwiftPM project](Documentation/with_swiftpm.md) | [On an Xcode Project](Documentation/only_xcode.md) |\n| ----------------------------------------------------- | -------------------------------------------------- |\n\n### Deployment\n\nUse `swift run rocket [patch]`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibapm%2Fkomondor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshibapm%2Fkomondor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibapm%2Fkomondor/lists"}