⚠️ Stop saying "you forgot to …" in code review in Kotlin
The project is now on a stable version.
Is possible to generate a working danger-kotlin
instance from the code that is currently on this repo, or use it via GitHub actions or brew
.
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")
}
}
}
brew install danger/tap/danger-kotlin
brew install danger/tap/danger-kotlin-intel
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
bash <(curl -s https://raw.githubusercontent.com/danger/kotlin/master/scripts/install.sh)
source ~/.bash_profile
You can add danger/kotlin to your actions
Parameters:
dangerfile
: Path to danger file, required: false
, default: Dangerfile.df.kts
run-mode
: Run mode: ci
, local
, pr
, required: false
default: ci
job-id:
Reported CI job ID, required: false
, default: danger/kotlin
args
: Extra custom arguments like "--failOnErrors --no-publish-check" and etc, required: false
jobs:
build:
runs-on: ubuntu-latest
name: "Run Danger"
steps:
- uses: actions/checkout@v1
- name: Danger
uses: danger/kotlin@1.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Danger a pre built images that you can use with your action:
https://github.com/orgs/danger/packages/container/package/danger-kotlin In order to import one of those use the docker:// prefix
jobs:
build:
runs-on: ubuntu-latest
name: "Run Danger"
container:
image: docker://ghcr.io/danger/danger-kotlin:1.3.1
steps:
- uses: actions/checkout@v4
- name: Run Danger
run: danger-kotlin ci --failOnErrors --no-publish-check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
You can activate the autocomplete following this additional steps:
Preferences -> Build, Execution, Deployment -> Compiler -> Kotlin Compiler
(Preferences -> Kotlin Compiler
in Android Studio, Recent Android Studio versions will show this option when you close all project and open the Settings from the initial screen)Kotlin Scripting
Script template classes
with systems.danger.kts.DangerFileScript
Script templates classpath
with /usr/local/lib/danger/danger-kotlin.jar
Preferences -> Language & Frameworks -> Kotlin -> Kotlin Scripting
DangerFileScript
is active and above the default Kotlin Script
Dangerfile.df.kts
the autocomplete and syntax highlighting doesn't work, try to reboot your IDE or open the Dangerfile from your IDE as a single file.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")
danger-kotlin ci
- Use this on CIdanger-kotlin pr https://github.com/Moya/Harvey/pull/23
- Use this to build your Dangerfiledanger-kotlin local
- Use this to run danger against your local changes from master