@@ -5,31 +5,69 @@ import { resolve } from 'path';
5
5
import tslint from 'danger-plugin-tslint' ;
6
6
import { prettyResults } from 'danger-plugin-tslint/dist/prettyResults' ;
7
7
8
- const packages = [ 'apm' , 'browser' , 'core' , 'hub' , 'integrations' , 'minimal' , 'node' , 'types' , 'utils' ] ;
8
+ const packages = [ 'apm' , 'core' , 'hub' , 'integrations' , 'minimal' , 'node' , 'types' , 'utils' ] ;
9
+
10
+ /**
11
+ * Eslint your code with Danger
12
+ * Based on fork from: https://github.com/appcelerator/danger-plugin-eslint
13
+ */
14
+ async function eslint ( config : any , extensions ?: string [ ] ) {
15
+ const allFiles = danger . git . created_files . concat ( danger . git . modified_files ) ;
16
+ const options : Options = { baseConfig : config } ;
17
+ if ( extensions ) {
18
+ options . extensions = extensions ;
19
+ }
20
+ const cli = new CLIEngine ( options ) ;
21
+ // let eslint filter down to non-ignored, matching the extensions expected
22
+ const filesToLint = allFiles . filter ( f => {
23
+ return ! cli . isPathIgnored ( f ) && cli . options . extensions . some ( ext => f . endsWith ( ext ) ) ;
24
+ } ) ;
25
+ return Promise . all ( filesToLint . map ( f => lintFile ( cli , config , f ) ) ) ;
26
+ }
27
+
28
+ async function lintFile ( linter , config , path ) {
29
+ const contents = await danger . github . utils . fileContents ( path ) ;
30
+ const report = linter . executeOnText ( contents , path ) ;
31
+
32
+ if ( report . results . length !== 0 ) {
33
+ report . results [ 0 ] . messages . map ( msg => {
34
+ if ( msg . fatal ) {
35
+ fail ( `Fatal error linting ${ path } with eslint.` ) ;
36
+ return ;
37
+ }
38
+
39
+ const fn = { 1 : warn , 2 : fail } [ msg . severity ] ;
40
+
41
+ fn ( `${ path } line ${ msg . line } – ${ msg . message } (${ msg . ruleId } )` , path , msg . line ) ;
42
+ } ) ;
43
+ }
44
+ }
9
45
10
46
export default async ( ) => {
11
47
if ( ! danger . github ) {
12
48
return ;
13
49
}
14
50
15
51
schedule ( async ( ) => {
16
- const tsLintResult = ( await Promise . all (
17
- packages . map ( packageName => {
18
- return new Promise < string > ( res => {
19
- tslint ( {
20
- lintResultsJsonPath : resolve ( __dirname , 'packages' , packageName , 'lint-results.json' ) ,
21
- handleResults : results => {
22
- if ( results . length > 0 ) {
23
- const formattedResults = prettyResults ( results ) ;
24
- res ( `TSLint failed: **@sentry/${ packageName } **\n\n${ formattedResults } ` ) ;
25
- } else {
26
- res ( '' ) ;
27
- }
28
- } ,
52
+ const tsLintResult = (
53
+ await Promise . all (
54
+ packages . map ( packageName => {
55
+ return new Promise < string > ( res => {
56
+ tslint ( {
57
+ lintResultsJsonPath : resolve ( __dirname , 'packages' , packageName , 'lint-results.json' ) ,
58
+ handleResults : results => {
59
+ if ( results . length > 0 ) {
60
+ const formattedResults = prettyResults ( results ) ;
61
+ res ( `TSLint failed: **@sentry/${ packageName } **\n\n${ formattedResults } ` ) ;
62
+ } else {
63
+ res ( '' ) ;
64
+ }
65
+ } ,
66
+ } ) ;
29
67
} ) ;
30
- } ) ;
31
- } ) ,
32
- ) ) . filter ( str => str . length ) ;
68
+ } ) ,
69
+ )
70
+ ) . filter ( str => str . length ) ;
33
71
if ( tsLintResult . length ) {
34
72
tsLintResult . forEach ( tsLintFail => {
35
73
fail ( `${ tsLintFail } ` ) ;
@@ -39,6 +77,8 @@ export default async () => {
39
77
}
40
78
} ) ;
41
79
80
+ await eslint ( ) ;
81
+
42
82
const hasChangelog = danger . git . modified_files . indexOf ( 'CHANGELOG.md' ) !== - 1 ;
43
83
const isTrivial = ( danger . github . pr . body + danger . github . pr . title ) . includes ( '#trivial' ) ;
44
84
0 commit comments