Threat

Collection of useful Danger plugins which intends to help you get up and running with Danger faster

Danger itself - https://danger.systems

Usage

All you need to do to start using Threat is:

  1. Add it to your Gemfile
group :development, :test do
  gem 'threat', require: false
end
  1. Bundle
bundle install
  1. Import it into your Dangerfile
danger.import_dangerfile(gem: 'threat')
  1. Create a GitHub workflow which will run your Dangerfile when the PR is opened/updated
# .github/workflows/ci.yml

name: CI

on:
  pull_request:
    branches:
      - master

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

# https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token
permissions:
  actions: write
  checks: write
  contents: read
  statuses: write
  pull-requests: write

jobs:
  danger:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.3.1
          bundler-cache: true

      - name: Run Danger
        env:
          DANGER_GITHUB_API_TOKEN: ${{ github.token }}
        run: bundle exec danger

Available plugins

  1. PR Title

Validates that the Pull Request title is in correct format, containing JIRA ticket number and a meaningful short description. This works best when combined with "use pr title" + squash and merge strategy in GitHub

# Dangerfile

danger.import_dangerfile(gem: 'threat')

pr_title.run!
  1. TODO

Checks if there are TODOs in PR diff. Can be improved by adding logic that will check if TODO was introduced in the PR itself, in this case warning message could be rephrased

# Dangerfile

danger.import_dangerfile(gem: 'threat')

todo.run!
  1. Confetti 🎉

Just add the following line at the bottom of your Dangerfile to celebrate a good run!

# Dangerfile

danger.import_dangerfile(gem: 'threat')

# The rest of your Dangerfile goes here...

confetti.run! unless failed?

P.S Raycast and macOS is required (not a paid promotion) (sorry @dhh)

Contributing

Yes, please 🥺