Skip to content

makes easy to manage git hooks for written in Swift products

License

Notifications You must be signed in to change notification settings

yanamura/Captain

Repository files navigation

Captain

travis Swift 5.1

Captain makes easy to manage git hooks

Install

Using Mint

if you want to install globally, use Mint

$ mint install yanamura/Captain

Using SwiftPackageManager

/// Package.swift
    dependencies: [
        ...
        .package(url: "https://github.com/yanamura/Captain"),
    ]
$ swift build --package-path <path to Package.swift>  -c release

executable binary will be created to ./build/release/captain

Usage

Configuration

create .captain onproject root directory.

/ProjectDir
  /.git
  .gitignore
  .captain

.git directory and .captain file should be in same location.

.captain

{
  "pre-commit": "swift-format -r Sources -i"
}

or

{
  "pre-commit": [
    "swift-format -r Sources -i",
    "git add ."
  ]
}

supported hooks

  • applypatch-msg
  • pre-applypatch
  • post-applypatch
  • pre-commit
  • prepare-commit-msg
  • commit-msg
  • post-commit
  • pre-rebase
  • post-checkout
  • post-merge
  • pre-push
  • pre-receive
  • update
  • post-receive
  • post-update
  • push-to-checkout
  • pre-auto-gc
  • post-rewrite
  • sendemail-validat

Set Git Hooks

$ captain install

Using Swift Package Manager

/// Package.swift
    dependencies: [
        ...
        .package(url: "https://github.com/yanamura/Captain"),
    ]
$ swift run --package-path <path to Package.swift>  -c release captain install

Using Mint

$ mint run yanamura/Captain captain install

Unset Git Hooks

$ captain uninstall