-
-
Notifications
You must be signed in to change notification settings - Fork 368
/
danger-local.ts
39 lines (33 loc) · 1.38 KB
/
danger-local.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /usr/bin/env node
import program from "commander"
import setSharedArgs, { SharedCLI } from "./utils/sharedDangerfileArgs"
import { runRunner } from "./ci/runner"
import { LocalGit } from "../platforms/LocalGit"
import { FakeCI } from "../ci_source/providers/Fake"
interface App extends SharedCLI {
/** What should we compare against? */
base?: string
/** Should we run against current staged changes? */
staging?: boolean
}
program
.usage("[options]")
.description("Runs danger without PR metadata, useful for git hooks.")
.option("-s, --staging", "Just use staged changes.")
.option("-b, --base [branch_name]", "Use a different base branch", "master")
.option("-j, --outputJSON", "Outputs the resulting JSON to STDOUT")
.allowUnknownOption(true)
setSharedArgs(program).parse(process.argv)
const app = program as any as App
const base = app.base
const localPlatform = new LocalGit({ base, staging: app.staging })
localPlatform.validateThereAreChanges().then((changes) => {
if (changes) {
const fakeSource = new FakeCI(process.env)
// By setting the custom env var we can be sure that the runner doesn't
// try to find the CI danger is running on and use that.
runRunner(app, { source: fakeSource, platform: localPlatform, additionalEnvVars: { DANGER_LOCAL_NO_CI: "yep" } })
} else {
console.log(`No git changes detected between head and ${base}.`)
}
})