danger-swiftformat Gem Version

A Danger plugin to check Swift formatting using SwiftFormat.

This plugin is heavily inspired by danger-swiftlint.

Installation

Add this line to your Gemfile:

gem 'danger-swiftformat'

SwiftFormat also needs to be installed before you run Danger.

Usage

Add this to your Dangerfile

swiftformat.check_format

By default, danger-swiftformat will check added and modified files.

Options and parameters

If you want errors to fail Danger, you can use the fail_on_error option:

swiftformat.check_format(fail_on_error: true)

You can specify the swiftformat binary using the binary_path parameter:

swiftformat.binary_path = "/path/to/swiftformat"

You can specify the Swift version of your project using the swiftversion parametter:

swiftformat.swiftversion = "5"

You can specify additional swiftformat arguments using the additional_args parameter:

swiftformat.additional_args = "--indent tab --self insert"

You can specify additional message (e.g. how to fix format issue) for danger comment using the additional_message parameter:

swiftformat.additional_message = "your additional message for contributor"

By default, danger-swiftformat will run on any modified or created file ending in .swift. If you'd like to exclude certain directories or files such as Pods, you can use the exclude parameter:

swiftformat.exclude = %w(Pods/** Carthage/** Sources/Nope.swift **/*_autogenerated.swift)

If you want the format results shows in the diff instead of a comment, you can use the inline_mode option. Violations that are out of the diff will be shown in danger's fail or warn section:

swiftformat.inline_mode = true

The exclude option takes an array of glob patterns; you can find additional documentation on the patterns here.

Development

  1. Clone this repo
  2. Run bundle install to setup dependencies.
  3. Run bundle exec rake spec to run the tests.
  4. Use bundle exec guard to automatically have tests run as you make changes.
  5. Make your changes.

Releasing a new version

Use the release.sh script:

./scripts/release.sh

Then bump the gem to the next patch version.