Danger Kotlin SDK

Develop your own plugin for Danger Kotlin

License

License

Categories

Categories

Kotlin Languages
GroupId

GroupId

systems.danger
ArtifactId

ArtifactId

danger-kotlin-sdk
Last Version

Last Version

1.2
Release Date

Release Date

Type

Type

module
Description

Description

Danger Kotlin SDK
Develop your own plugin for Danger Kotlin
Project URL

Project URL

https://github.com/danger/kotlin
Source Code Management

Source Code Management

https://github.com/danger/kotlin

Download danger-kotlin-sdk

Dependencies

compile (1)

Group / Artifact Type Version
org.jetbrains.kotlin : kotlin-stdlib-jdk8 jar 1.4.0

Project Modules

There are no modules declared in this project.

Current Version Maven Central - SDK Awesome Kotlin Badge


⚠️ Stop saying "you forgot to …" in code review in Kotlin

Project status

The project is still work in progress. Is possible to generate a working danger-kotlin instance from the code that is currently on this repo, but is not ready to be distributed yet.

What it looks like today

You can make a Dangerfile.df.kts in your root project that looks through PR metadata, it's fully typed.

import systems.danger.kotlin.*

danger(args) {

    val allSourceFiles = git.modifiedFiles + git.createdFiles
    val changelogChanged = allSourceFiles.contains("CHANGELOG.md")
    val sourceChanges = allSourceFiles.firstOrNull { it.contains("src") }

    onGitHub {
        val isTrivial = pullRequest.title.contains("#trivial")

        // Changelog
        if (!isTrivial && !changelogChanged && sourceChanges != null) {
            warn(WordUtils.capitalize("any changes to library code should be reflected in the Changelog.\n\nPlease consider adding a note there and adhere to the [Changelog Guidelines](https://github.com/Moya/contributors/blob/master/Changelog%20Guidelines.md)."))
        }

        // Big PR Check
        if ((pullRequest.additions ?: 0) - (pullRequest.deletions ?: 0) > 300) {
            warn("Big PR, try to keep changes smaller if you can")
        }

        // Work in progress check
        if (pullRequest.title.contains("WIP", false)) {
            warn("PR is classed as Work in Progress")
        }
    }
}

Setup

MacOs

brew install danger/tap/danger-kotlin

You need to have Xcode installed and not relying on command line tools. If you're seeing this error when running xcodebuild:

$ xcodebuild -version
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

You can fix it with:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Linux

bash <(curl -s https://raw.githubusercontent.com/danger/kotlin/master/scripts/install.sh)
source ~/.bash_profile

GitHub Actions

You can add danger/kotlin to your actions

jobs:
  build:
    runs-on: ubuntu-latest
    name: "Run Danger"
    steps:
      - uses: actions/checkout@v1
      - name: Danger
        uses: danger/[email protected]
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Autocomplete and Syntax highlighting in IntelliJ IDEA or Android Studio

You can activate the autocomplete following this additional steps:

  • Install danger on your local machine
  • Go to Preferences -> Build, Execution, Deployment -> Compiler -> Kotlin Compiler (Preferences -> Kotlin Compiler in Android Studio)
  • At the bottom you will find a section Kotlin Scripting
  • Complete the field Script template classes with systems.danger.kts.DangerFileScript
  • Complete the field Script templates classpath with /usr/local/lib/danger/danger-kotlin.jar
  • Go to Preferences -> Language & Frameworks -> Kotlin -> Kotlin Scripting
  • Make sure the script template DangerFileScript is active and above the default Kotlin Script
  • Apply changes
  • If opening the Dangerfile.df.kts the autocomplete and syntax highlighting doesn't work, try to reboot your IDE.

Using external maven dependencies into your Dangerfile

You can use any external dependency by adding the following lines at the top of your Dangerfile.df.kts

@file:Repository("https://repo.maven.apache.org")
@file:DependsOn("groupId:artifactId:version")

Commands

  • danger-kotlin ci - Use this on CI
  • danger-kotlin pr https://github.com/Moya/Harvey/pull/23 - Use this to build your Dangerfile
  • danger-kotlin local - Use this to run danger against your local changes from master

Authors

danger-kotlin was developed by @gianluz and @f-meloni

systems.danger

Danger

Stop saying "You forgot to..."

Versions

Version
1.2
1.1
1.0