skuba 3.15.2 → 3.15.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/github/checkRun.d.ts +11 -0
- package/lib/api/github/checkRun.js +90 -0
- package/lib/api/github/checkRun.js.map +1 -0
- package/lib/api/github/index.d.ts +2 -0
- package/lib/api/github/index.js +6 -0
- package/lib/api/github/index.js.map +1 -0
- package/lib/cli/adapter/eslint.d.ts +7 -0
- package/lib/cli/adapter/eslint.js +18 -5
- package/lib/cli/adapter/eslint.js.map +1 -1
- package/lib/cli/init/getConfig.d.ts +1 -1
- package/lib/cli/lint/annotate/buildkite/eslint.d.ts +2 -0
- package/lib/cli/lint/annotate/buildkite/eslint.js +26 -0
- package/lib/cli/lint/annotate/buildkite/eslint.js.map +1 -0
- package/lib/cli/lint/annotate/buildkite/index.d.ts +4 -0
- package/lib/cli/lint/annotate/buildkite/index.js +53 -0
- package/lib/cli/lint/annotate/buildkite/index.js.map +1 -0
- package/lib/cli/lint/annotate/buildkite/prettier.d.ts +2 -0
- package/lib/cli/lint/annotate/buildkite/prettier.js +33 -0
- package/lib/cli/lint/annotate/buildkite/prettier.js.map +1 -0
- package/lib/cli/lint/annotate/buildkite/tsc.d.ts +2 -0
- package/lib/cli/lint/annotate/buildkite/tsc.js +38 -0
- package/lib/cli/lint/annotate/buildkite/tsc.js.map +1 -0
- package/lib/cli/lint/annotate/github/eslint.d.ts +3 -0
- package/lib/cli/lint/annotate/github/eslint.js +13 -0
- package/lib/cli/lint/annotate/github/eslint.js.map +1 -0
- package/lib/cli/lint/annotate/github/index.d.ts +4 -0
- package/lib/cli/lint/annotate/github/index.js +53 -0
- package/lib/cli/lint/annotate/github/index.js.map +1 -0
- package/lib/cli/lint/annotate/github/prettier.d.ts +3 -0
- package/lib/cli/lint/annotate/github/prettier.js +13 -0
- package/lib/cli/lint/annotate/github/prettier.js.map +1 -0
- package/lib/cli/lint/annotate/github/tsc.d.ts +3 -0
- package/lib/cli/lint/annotate/github/tsc.js +56 -0
- package/lib/cli/lint/annotate/github/tsc.js.map +1 -0
- package/lib/cli/lint/annotate/index.d.ts +4 -0
- package/lib/cli/lint/annotate/index.js +22 -0
- package/lib/cli/lint/annotate/index.js.map +1 -0
- package/lib/cli/lint/external.d.ts +7 -0
- package/lib/cli/lint/external.js +9 -38
- package/lib/cli/lint/external.js.map +1 -1
- package/lib/cli/lint/types.d.ts +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/args.d.ts +1 -1
- package/package.json +13 -7
- package/template/base/_.prettierignore +2 -0
- package/template/express-rest-api/.buildkite/pipeline.yml +4 -4
- package/template/express-rest-api/.nvmrc +1 -1
- package/template/express-rest-api/Dockerfile +1 -1
- package/template/express-rest-api/Dockerfile.dev-deps +1 -1
- package/template/express-rest-api/package.json +5 -5
- package/template/express-rest-api/src/framework/logging.ts +2 -1
- package/template/greeter/.buildkite/pipeline.yml +1 -1
- package/template/greeter/.nvmrc +1 -1
- package/template/greeter/Dockerfile +1 -1
- package/template/greeter/package.json +2 -2
- package/template/koa-rest-api/.buildkite/pipeline.yml +4 -4
- package/template/koa-rest-api/.nvmrc +1 -1
- package/template/koa-rest-api/Dockerfile +1 -1
- package/template/koa-rest-api/Dockerfile.dev-deps +1 -1
- package/template/koa-rest-api/package.json +11 -11
- package/template/koa-rest-api/src/framework/logging.ts +2 -1
- package/template/lambda-sqs-worker/.buildkite/pipeline.yml +2 -2
- package/template/lambda-sqs-worker/package.json +9 -9
- package/template/lambda-sqs-worker/src/framework/handler.ts +2 -2
- package/template/lambda-sqs-worker/src/framework/logging.ts +2 -1
- package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +2 -2
- package/template/lambda-sqs-worker-cdk/package.json +2 -2
- package/template/oss-npm-package/.github/workflows/release.yml +2 -2
- package/template/oss-npm-package/.github/workflows/validate.yml +2 -2
- package/template/oss-npm-package/.nvmrc +1 -1
- package/template/oss-npm-package/_package.json +1 -1
- package/template/private-npm-package/.nvmrc +1 -1
- package/template/private-npm-package/_package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Endpoints } from '@octokit/types';
|
|
2
|
+
declare type Output = NonNullable<Endpoints['POST /repos/{owner}/{repo}/check-runs']['parameters']['output']>;
|
|
3
|
+
export declare type Annotation = NonNullable<Output['annotations']>[number];
|
|
4
|
+
interface CreateCheckRunParameters {
|
|
5
|
+
name: string;
|
|
6
|
+
summary: string;
|
|
7
|
+
annotations: Annotation[];
|
|
8
|
+
conclusion: 'failure' | 'success';
|
|
9
|
+
}
|
|
10
|
+
export declare const createCheckRunFromBuildkite: ({ name, summary, annotations, conclusion, }: CreateCheckRunParameters) => Promise<void>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createCheckRunFromBuildkite = void 0;
|
|
13
|
+
const rest_1 = require("@octokit/rest");
|
|
14
|
+
const GITHUB_MAX_ANNOTATIONS = 50;
|
|
15
|
+
const isGitHubAnnotationsEnabled = () => Boolean(process.env.BUILDKITE_BUILD_NUMBER &&
|
|
16
|
+
process.env.BUILDKITE_COMMIT &&
|
|
17
|
+
process.env.BUILDKITE_REPO &&
|
|
18
|
+
process.env.GITHUB_API_TOKEN);
|
|
19
|
+
// Pulls out the GitHub Owner + Repo String from repo urls eg.
|
|
20
|
+
// git@github.com:seek-oss/skuba.git
|
|
21
|
+
// https://github.com/seek-oss/skuba.git
|
|
22
|
+
// Pulls out `seek-oss` as owner and `skuba` as repo
|
|
23
|
+
const ownerRepoRegex = new RegExp(/github.com(?::|\/)(.*)\/(.*).git/);
|
|
24
|
+
const getOwnerRepo = () => {
|
|
25
|
+
const match = ownerRepoRegex.exec(process.env.BUILDKITE_REPO);
|
|
26
|
+
const owner = match === null || match === void 0 ? void 0 : match[1];
|
|
27
|
+
const repo = match === null || match === void 0 ? void 0 : match[2];
|
|
28
|
+
if (!owner || !repo) {
|
|
29
|
+
throw new Error('Could not extract GitHub owner/repo from BUILDKITE_REPO environment variable');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
owner,
|
|
33
|
+
repo,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Create a uniform title format for our check runs
|
|
38
|
+
* @param conclusion - `failure` or `success`
|
|
39
|
+
* @param annotationsLength - Number of annotations added
|
|
40
|
+
* @returns Title eg. Build #12 failed (24 annotations added)
|
|
41
|
+
*/
|
|
42
|
+
const createTitle = (conclusion, annotationsLength) => {
|
|
43
|
+
const build = `Build #${process.env.BUILDKITE_BUILD_NUMBER}`;
|
|
44
|
+
const numAnnotations = annotationsLength > GITHUB_MAX_ANNOTATIONS
|
|
45
|
+
? GITHUB_MAX_ANNOTATIONS
|
|
46
|
+
: annotationsLength;
|
|
47
|
+
const status = conclusion === 'success' ? 'passed' : 'failed';
|
|
48
|
+
const plural = numAnnotations === 1 ? '' : 's';
|
|
49
|
+
return `${build} ${status} (${numAnnotations} annotation${plural} added)`;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Adds more context to the summary provided
|
|
53
|
+
* @param summary - report summary
|
|
54
|
+
* @param annotationsLength - Number of annotations added
|
|
55
|
+
* @returns summary with extra metadata
|
|
56
|
+
*/
|
|
57
|
+
const createEnrichedSummary = (summary, annotationsLength) => [
|
|
58
|
+
summary,
|
|
59
|
+
...(annotationsLength > GITHUB_MAX_ANNOTATIONS
|
|
60
|
+
? [
|
|
61
|
+
`There were ${annotationsLength} annotations created. However, the number of annotations displayed has been capped to ${GITHUB_MAX_ANNOTATIONS}`,
|
|
62
|
+
]
|
|
63
|
+
: []),
|
|
64
|
+
].join('\n\n');
|
|
65
|
+
const createCheckRunFromBuildkite = ({ name, summary, annotations, conclusion, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
+
if (!isGitHubAnnotationsEnabled()) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const client = new rest_1.Octokit({
|
|
70
|
+
auth: process.env.GITHUB_API_TOKEN,
|
|
71
|
+
});
|
|
72
|
+
const { owner, repo } = getOwnerRepo();
|
|
73
|
+
const title = createTitle(conclusion, annotations.length);
|
|
74
|
+
const enrichedSummary = createEnrichedSummary(summary, annotations.length);
|
|
75
|
+
const checkRunName = `skuba/${name}`;
|
|
76
|
+
yield client.checks.create({
|
|
77
|
+
owner,
|
|
78
|
+
repo,
|
|
79
|
+
name: checkRunName,
|
|
80
|
+
output: {
|
|
81
|
+
title,
|
|
82
|
+
summary: enrichedSummary,
|
|
83
|
+
annotations: annotations.slice(0, GITHUB_MAX_ANNOTATIONS),
|
|
84
|
+
},
|
|
85
|
+
head_sha: process.env.BUILDKITE_COMMIT,
|
|
86
|
+
conclusion,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
exports.createCheckRunFromBuildkite = createCheckRunFromBuildkite;
|
|
90
|
+
//# sourceMappingURL=checkRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkRun.js","sourceRoot":"","sources":["../../../src/api/github/checkRun.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAwC;AASxC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,0BAA0B,GAAG,GAAY,EAAE,CAC/C,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,sBAAsB;IAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB;IAC5B,OAAO,CAAC,GAAG,CAAC,cAAc;IAC1B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAC/B,CAAC;AACJ,8DAA8D;AAC9D,oCAAoC;AACpC,wCAAwC;AACxC,oDAAoD;AACpD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAEtE,MAAM,YAAY,GAAG,GAAoC,EAAE;IACzD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAwB,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;KACH;IAED,OAAO;QACL,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAClB,UAAiC,EACjC,iBAAyB,EACjB,EAAE;IACV,MAAM,KAAK,GAAG,UAAU,OAAO,CAAC,GAAG,CAAC,sBAAgC,EAAE,CAAC;IACvE,MAAM,cAAc,GAClB,iBAAiB,GAAG,sBAAsB;QACxC,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,iBAAiB,CAAC;IACxB,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9D,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/C,OAAO,GAAG,KAAK,IAAI,MAAM,KAAK,cAAc,cAAc,MAAM,SAAS,CAAC;AAC5E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAC5B,OAAe,EACf,iBAAyB,EACjB,EAAE,CACV;IACE,OAAO;IACP,GAAG,CAAC,iBAAiB,GAAG,sBAAsB;QAC5C,CAAC,CAAC;YACE,cAAc,iBAAiB,yFAAyF,sBAAsB,EAAE;SACjJ;QACH,CAAC,CAAC,EAAE,CAAC;CACR,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AASV,MAAM,2BAA2B,GAAG,CAAO,EAChD,IAAI,EACJ,OAAO,EACP,WAAW,EACX,UAAU,GACe,EAAiB,EAAE;IAC5C,IAAI,CAAC,0BAA0B,EAAE,EAAE;QACjC,OAAO;KACR;IAED,MAAM,MAAM,GAAG,IAAI,cAAO,CAAC;QACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;KACnC,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,SAAS,IAAI,EAAE,CAAC;IAErC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACzB,KAAK;QACL,IAAI;QACJ,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,KAAK;YACL,OAAO,EAAE,eAAe;YACxB,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC;SAC1D;QACD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAA0B;QAChD,UAAU;KACX,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AA9BW,QAAA,2BAA2B,+BA8BtC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createCheckRunFromBuildkite = void 0;
|
|
4
|
+
var checkRun_1 = require("./checkRun");
|
|
5
|
+
Object.defineProperty(exports, "createCheckRunFromBuildkite", { enumerable: true, get: function () { return checkRun_1.createCheckRunFromBuildkite; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/github/index.ts"],"names":[],"mappings":";;;AACA,uCAAyD;AAAhD,uHAAA,2BAA2B,OAAA"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import { Linter } from 'eslint';
|
|
1
2
|
import { Logger } from '../../utils/logging';
|
|
3
|
+
export interface ESLintResult {
|
|
4
|
+
messages: Linter.LintMessage[];
|
|
5
|
+
filePath: string;
|
|
6
|
+
}
|
|
2
7
|
export interface ESLintOutput {
|
|
8
|
+
errors: ESLintResult[];
|
|
9
|
+
warnings: ESLintResult[];
|
|
3
10
|
ok: boolean;
|
|
4
11
|
output: string;
|
|
5
12
|
}
|
|
@@ -41,18 +41,31 @@ const runESLint = (mode, logger) => __awaiter(void 0, void 0, void 0, function*
|
|
|
41
41
|
]);
|
|
42
42
|
const end = process.hrtime.bigint();
|
|
43
43
|
logger.plain(`Processed ${logger.pluralise(results.length, 'file')} in ${logger.timing(start, end)}.`);
|
|
44
|
-
|
|
44
|
+
const errors = [];
|
|
45
|
+
const warnings = [];
|
|
45
46
|
for (const result of results) {
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
const relativePath = path_1.default.relative(cwd, result.filePath);
|
|
48
|
+
if (result.errorCount) {
|
|
49
|
+
errors.push({
|
|
50
|
+
filePath: relativePath,
|
|
51
|
+
messages: result.messages,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (result.warningCount) {
|
|
55
|
+
warnings.push({
|
|
56
|
+
filePath: relativePath,
|
|
57
|
+
messages: result.messages,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
logger.debug(symbolForResult(result), relativePath);
|
|
48
61
|
}
|
|
49
|
-
const ok = errors === 0;
|
|
62
|
+
const ok = errors.length === 0;
|
|
50
63
|
yield eslint_1.ESLint.outputFixes(results);
|
|
51
64
|
const output = formatter.format(results);
|
|
52
65
|
if (output) {
|
|
53
66
|
logger.plain(output);
|
|
54
67
|
}
|
|
55
|
-
return { ok, output };
|
|
68
|
+
return { ok, output, errors, warnings };
|
|
56
69
|
});
|
|
57
70
|
exports.runESLint = runESLint;
|
|
58
71
|
//# sourceMappingURL=eslint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,kDAA0B;AAC1B,mCAAwC;AAIxC,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACpD,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC,CAAC;AAcK,MAAM,SAAS,GAAG,CACvB,IAAuB,EACvB,MAAc,EACS,EAAE;IACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;QACxB,2EAA2E;QAC3E,yDAAyD;QACzD,eAAe;QACf,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE,IAAI,KAAK,QAAQ;QACtB,6BAA6B,EAAE,OAAO;KACvC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEtC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,MAAM,CAAC,aAAa,EAAE;QACtB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEpC,MAAM,CAAC,KAAK,CACV,aAAa,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CACvE,KAAK,EACL,GAAG,CACJ,GAAG,CACL,CAAC;IAEF,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;KACrD;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAE/B,MAAM,eAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC,CAAA,CAAC;AApEW,QAAA,SAAS,aAoEpB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.createEslintAnnotations = void 0;
|
|
23
|
+
const Buildkite = __importStar(require("../../../../api/buildkite"));
|
|
24
|
+
const createEslintAnnotations = (eslint) => !eslint.ok ? ['**ESLint**', Buildkite.md.terminal(eslint.output.trim())] : [];
|
|
25
|
+
exports.createEslintAnnotations = createEslintAnnotations;
|
|
26
|
+
//# sourceMappingURL=eslint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/eslint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAGhD,MAAM,uBAAuB,GAAG,CAAC,MAAoB,EAAY,EAAE,CACxE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AADnE,QAAA,uBAAuB,2BAC4C"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ESLintOutput } from '../../../../cli/adapter/eslint';
|
|
2
|
+
import { PrettierOutput } from '../../../../cli/adapter/prettier';
|
|
3
|
+
import { StreamInterceptor } from '../../../../cli/lint/external';
|
|
4
|
+
export declare const createBuildkiteAnnotations: (eslint: ESLintOutput, prettier: PrettierOutput, tscOk: boolean, tscOutputStream: StreamInterceptor) => Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.createBuildkiteAnnotations = void 0;
|
|
32
|
+
const Buildkite = __importStar(require("../../../../api/buildkite"));
|
|
33
|
+
const eslint_1 = require("./eslint");
|
|
34
|
+
const prettier_1 = require("./prettier");
|
|
35
|
+
const tsc_1 = require("./tsc");
|
|
36
|
+
const createBuildkiteAnnotations = (eslint, prettier, tscOk, tscOutputStream) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
if (eslint.ok && prettier.ok && tscOk) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const buildkiteOutput = [
|
|
41
|
+
'`skuba lint` found issues that require triage:',
|
|
42
|
+
...(0, eslint_1.createEslintAnnotations)(eslint),
|
|
43
|
+
...(0, prettier_1.createPrettierAnnotations)(prettier),
|
|
44
|
+
...(0, tsc_1.createTscAnnotations)(tscOk, tscOutputStream),
|
|
45
|
+
].join('\n\n');
|
|
46
|
+
yield Buildkite.annotate(buildkiteOutput, {
|
|
47
|
+
context: 'skuba-lint-external',
|
|
48
|
+
scopeContextToStep: true,
|
|
49
|
+
style: 'error',
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
exports.createBuildkiteAnnotations = createBuildkiteAnnotations;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAKvD,qCAAmD;AACnD,yCAAuD;AACvD,+BAA6C;AAEtC,MAAM,0BAA0B,GAAG,CACxC,MAAoB,EACpB,QAAwB,EACxB,KAAc,EACd,eAAkC,EACnB,EAAE;IACjB,IAAI,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE;QACrC,OAAO;KACR;IAED,MAAM,eAAe,GAAW;QAC9B,gDAAgD;QAChD,GAAG,IAAA,gCAAuB,EAAC,MAAM,CAAC;QAClC,GAAG,IAAA,oCAAyB,EAAC,QAAQ,CAAC;QACtC,GAAG,IAAA,0BAAoB,EAAC,KAAK,EAAE,eAAe,CAAC;KAChD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,MAAM,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE;QACxC,OAAO,EAAE,qBAAqB;QAC9B,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAtBW,QAAA,0BAA0B,8BAsBrC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.createPrettierAnnotations = void 0;
|
|
23
|
+
const Buildkite = __importStar(require("../../../../api/buildkite"));
|
|
24
|
+
const createPrettierAnnotations = (prettier) => !prettier.ok
|
|
25
|
+
? [
|
|
26
|
+
'**Prettier**',
|
|
27
|
+
Buildkite.md.terminal(prettier.result.errored
|
|
28
|
+
.map(({ err, filepath }) => [filepath, ...(err ? [String(err)] : [])].join(' '))
|
|
29
|
+
.join('\n')),
|
|
30
|
+
]
|
|
31
|
+
: [];
|
|
32
|
+
exports.createPrettierAnnotations = createPrettierAnnotations;
|
|
33
|
+
//# sourceMappingURL=prettier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/prettier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAGhD,MAAM,yBAAyB,GAAG,CAAC,QAAwB,EAAY,EAAE,CAC9E,CAAC,QAAQ,CAAC,EAAE;IACV,CAAC,CAAC;QACE,cAAc;QACd,SAAS,CAAC,EAAE,CAAC,QAAQ,CACnB,QAAQ,CAAC,MAAM,CAAC,OAAO;aACpB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACpD;aACA,IAAI,CAAC,IAAI,CAAC,CACd;KACF;IACH,CAAC,CAAC,EAAE,CAAC;AAZI,QAAA,yBAAyB,6BAY7B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.createTscAnnotations = void 0;
|
|
23
|
+
const Buildkite = __importStar(require("../../../../api/buildkite"));
|
|
24
|
+
const createTscAnnotations = (tscOk, tscOutputStream) => !tscOk
|
|
25
|
+
? [
|
|
26
|
+
'**tsc**',
|
|
27
|
+
Buildkite.md.terminal(tscOutputStream
|
|
28
|
+
.output()
|
|
29
|
+
.split('\n')
|
|
30
|
+
.filter(Boolean)
|
|
31
|
+
.map((line) => line.replace(/^tsc\s+│ /, ''))
|
|
32
|
+
.filter((line) => !line.startsWith('TSFILE: '))
|
|
33
|
+
.join('\n')
|
|
34
|
+
.trim()),
|
|
35
|
+
]
|
|
36
|
+
: [];
|
|
37
|
+
exports.createTscAnnotations = createTscAnnotations;
|
|
38
|
+
//# sourceMappingURL=tsc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/tsc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAGhD,MAAM,oBAAoB,GAAG,CAClC,KAAc,EACd,eAAkC,EACxB,EAAE,CACZ,CAAC,KAAK;IACJ,CAAC,CAAC;QACE,SAAS;QACT,SAAS,CAAC,EAAE,CAAC,QAAQ,CACnB,eAAe;aACZ,MAAM,EAAE;aACR,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;aAC9C,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE,CACV;KACF;IACH,CAAC,CAAC,EAAE,CAAC;AAlBI,QAAA,oBAAoB,wBAkBxB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createEslintAnnotations = void 0;
|
|
4
|
+
const createEslintAnnotations = (eslint) => [...eslint.errors, ...eslint.warnings].flatMap((result) => result.messages.map((message) => {
|
|
5
|
+
var _a, _b, _c;
|
|
6
|
+
// Annotations only support start_column and end_column on the same line.
|
|
7
|
+
const isSameLine = message.line === message.endLine;
|
|
8
|
+
const startColumn = isSameLine && message.column;
|
|
9
|
+
const endColumn = isSameLine && (message.endColumn || startColumn);
|
|
10
|
+
return Object.assign(Object.assign(Object.assign({ annotation_level: message.severity === 2 ? 'failure' : 'warning', start_line: (_a = message.line) !== null && _a !== void 0 ? _a : 1, end_line: (_c = (_b = message.endLine) !== null && _b !== void 0 ? _b : message.line) !== null && _c !== void 0 ? _c : 1 }, (startColumn && { start_column: startColumn })), (endColumn && { end_column: endColumn })), { message: message.message, path: result.filePath, title: `ESLint${message.ruleId ? ` (${message.ruleId})` : ''}` });
|
|
11
|
+
}));
|
|
12
|
+
exports.createEslintAnnotations = createEslintAnnotations;
|
|
13
|
+
//# sourceMappingURL=eslint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/github/eslint.ts"],"names":[],"mappings":";;;AAGO,MAAM,uBAAuB,GAAG,CACrC,MAAoB,EACC,EAAE,CACvB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAC5C,CAAC,MAAM,EAAuB,EAAE,CAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAqB,EAAE;;IACjD,yEAAyE;IACzE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC;IACpD,MAAM,WAAW,GAAG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC;IAEnE,mDACE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAChE,UAAU,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,CAAC,EAC7B,QAAQ,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,IAAI,mCAAI,CAAC,IAC3C,CAAC,WAAW,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,GAC9C,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,KAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,KAAK,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAC9D;AACJ,CAAC,CAAC,CACL,CAAC;AAtBS,QAAA,uBAAuB,2BAsBhC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ESLintOutput } from '../../../../cli/adapter/eslint';
|
|
2
|
+
import { PrettierOutput } from '../../../../cli/adapter/prettier';
|
|
3
|
+
import { StreamInterceptor } from '../../../../cli/lint/external';
|
|
4
|
+
export declare const createGitHubAnnotations: (eslint: ESLintOutput, prettier: PrettierOutput, tscOk: boolean, tscOutputStream: StreamInterceptor, summary: string) => Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.createGitHubAnnotations = void 0;
|
|
32
|
+
const GitHub = __importStar(require("../../../../api/github"));
|
|
33
|
+
const eslint_1 = require("./eslint");
|
|
34
|
+
const prettier_1 = require("./prettier");
|
|
35
|
+
const tsc_1 = require("./tsc");
|
|
36
|
+
const createGitHubAnnotations = (eslint, prettier, tscOk, tscOutputStream, summary) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const annotations = [
|
|
38
|
+
...(0, eslint_1.createEslintAnnotations)(eslint),
|
|
39
|
+
...(0, prettier_1.createPrettierAnnotations)(prettier),
|
|
40
|
+
...(0, tsc_1.createTscAnnotations)(tscOk, tscOutputStream),
|
|
41
|
+
];
|
|
42
|
+
const isOk = eslint.ok && prettier.ok && tscOk;
|
|
43
|
+
const conclusion = isOk ? 'success' : 'failure';
|
|
44
|
+
const reportSummary = isOk ? 'Lint passed' : summary;
|
|
45
|
+
yield GitHub.createCheckRunFromBuildkite({
|
|
46
|
+
name: 'lint',
|
|
47
|
+
summary: reportSummary,
|
|
48
|
+
annotations,
|
|
49
|
+
conclusion,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
exports.createGitHubAnnotations = createGitHubAnnotations;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/github/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AAKjD,qCAAmD;AACnD,yCAAuD;AACvD,+BAA6C;AAEtC,MAAM,uBAAuB,GAAG,CACrC,MAAoB,EACpB,QAAwB,EACxB,KAAc,EACd,eAAkC,EAClC,OAAe,EACf,EAAE;IACF,MAAM,WAAW,GAAwB;QACvC,GAAG,IAAA,gCAAuB,EAAC,MAAM,CAAC;QAClC,GAAG,IAAA,oCAAyB,EAAC,QAAQ,CAAC;QACtC,GAAG,IAAA,0BAAoB,EAAC,KAAK,EAAE,eAAe,CAAC;KAChD,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,MAAM,MAAM,CAAC,2BAA2B,CAAC;QACvC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,aAAa;QACtB,WAAW;QACX,UAAU;KACX,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAvBW,QAAA,uBAAuB,2BAuBlC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPrettierAnnotations = void 0;
|
|
4
|
+
const createPrettierAnnotations = (prettier) => prettier.result.errored.map((result) => ({
|
|
5
|
+
annotation_level: 'failure',
|
|
6
|
+
start_line: 1,
|
|
7
|
+
end_line: 1,
|
|
8
|
+
path: result.filepath,
|
|
9
|
+
message: 'This file has not been formatted with Prettier',
|
|
10
|
+
title: 'Prettier',
|
|
11
|
+
}));
|
|
12
|
+
exports.createPrettierAnnotations = createPrettierAnnotations;
|
|
13
|
+
//# sourceMappingURL=prettier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettier.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/github/prettier.ts"],"names":[],"mappings":";;;AAGO,MAAM,yBAAyB,GAAG,CACvC,QAAwB,EACH,EAAE,CACvB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvC,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,QAAQ;IACrB,OAAO,EAAE,gDAAgD;IACzD,KAAK,EAAE,UAAU;CAClB,CAAC,CAAC,CAAC;AAVO,QAAA,yBAAyB,6BAUhC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createTscAnnotations = void 0;
|
|
7
|
+
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
8
|
+
/**
|
|
9
|
+
* Matches the tsc │ prefix on each tsc log
|
|
10
|
+
*/
|
|
11
|
+
const tscPrefixRegex = new RegExp(/(tsc\s+│ )/, 'g');
|
|
12
|
+
/**
|
|
13
|
+
* Matches regular and pretty tsc output
|
|
14
|
+
* src/skuba.ts:43:7 - error TS2769: No overload matches this call.
|
|
15
|
+
Overload 1 of 2, '(obj: LogContext, msg?: string | undefined, ...args: any[]): void', gave the following error.
|
|
16
|
+
Argument of type 'unknown' is not assignable to parameter of type 'LogContext'.
|
|
17
|
+
Overload 2 of 2, '(msg?: string | undefined, ...args: any[]): void', gave the following error.
|
|
18
|
+
Argument of type 'unknown' is not assignable to parameter of type 'string | undefined'.
|
|
19
|
+
Type 'unknown' is not assignable to type 'string'.
|
|
20
|
+
1: src/skuba.ts
|
|
21
|
+
2. 43
|
|
22
|
+
3. 7
|
|
23
|
+
4. error
|
|
24
|
+
5. 2769
|
|
25
|
+
6. No overload matches this call. until the very end.
|
|
26
|
+
*/
|
|
27
|
+
const tscOutputRegex = new RegExp(/([^\s]*)[\(:](\d+)[,:](\d+)(?:\):\s+|\s+-\s+)(error|warning|info)\s+TS(\d+)\s*:\s*([\s\S]*?)(?=\n\S)/, 'g');
|
|
28
|
+
const annotationLevelMap = {
|
|
29
|
+
error: 'failure',
|
|
30
|
+
warning: 'warning',
|
|
31
|
+
info: 'notice',
|
|
32
|
+
};
|
|
33
|
+
const createTscAnnotations = (tscOk, tscOutputStream) => {
|
|
34
|
+
const annotations = [];
|
|
35
|
+
if (!tscOk) {
|
|
36
|
+
const rawOutput = (0, strip_ansi_1.default)(tscOutputStream.output()).replace(tscPrefixRegex, '');
|
|
37
|
+
const matches = rawOutput.matchAll(tscOutputRegex);
|
|
38
|
+
for (const match of matches) {
|
|
39
|
+
if ((match === null || match === void 0 ? void 0 : match.length) === 7) {
|
|
40
|
+
annotations.push({
|
|
41
|
+
annotation_level: annotationLevelMap[match[4]],
|
|
42
|
+
path: match[1],
|
|
43
|
+
start_line: Number(match[2]),
|
|
44
|
+
end_line: Number(match[2]),
|
|
45
|
+
start_column: Number(match[3]),
|
|
46
|
+
end_column: Number(match[3]),
|
|
47
|
+
message: match[6].trim(),
|
|
48
|
+
title: `tsc`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return annotations;
|
|
54
|
+
};
|
|
55
|
+
exports.createTscAnnotations = createTscAnnotations;
|
|
56
|
+
//# sourceMappingURL=tsc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/github/tsc.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAmC;AAOnC;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,cAAc,GAAG,IAAI,MAAM,CAC/B,sGAAsG,EACtG,GAAG,CACJ,CAAC;AAEF,MAAM,kBAAkB,GAGpB;IACF,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,QAAQ;CACf,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAClC,KAAc,EACd,eAAkC,EACb,EAAE;IACvB,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,SAAS,GAAG,IAAA,oBAAS,EAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAC3D,cAAc,EACd,EAAE,CACH,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAK,CAAC,EAAE;gBACvB,WAAW,CAAC,IAAI,CAAC;oBACf,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;oBAC1D,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC1B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBACxB,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;aACJ;SACF;KACF;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA5BW,QAAA,oBAAoB,wBA4B/B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ESLintOutput } from 'cli/adapter/eslint';
|
|
2
|
+
import { PrettierOutput } from 'cli/adapter/prettier';
|
|
3
|
+
import { StreamInterceptor } from '../external';
|
|
4
|
+
export declare const createAnnotations: (eslint: ESLintOutput, prettier: PrettierOutput, tscOk: boolean, tscOutputStream: StreamInterceptor, summary: string) => Promise<void>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createAnnotations = void 0;
|
|
13
|
+
const buildkite_1 = require("./buildkite");
|
|
14
|
+
const github_1 = require("./github");
|
|
15
|
+
const createAnnotations = (eslint, prettier, tscOk, tscOutputStream, summary) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
yield Promise.all([
|
|
17
|
+
(0, github_1.createGitHubAnnotations)(eslint, prettier, tscOk, tscOutputStream, summary),
|
|
18
|
+
(0, buildkite_1.createBuildkiteAnnotations)(eslint, prettier, tscOk, tscOutputStream),
|
|
19
|
+
]);
|
|
20
|
+
});
|
|
21
|
+
exports.createAnnotations = createAnnotations;
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/lint/annotate/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,2CAAyD;AACzD,qCAAmD;AAE5C,MAAM,iBAAiB,GAAG,CAC/B,MAAoB,EACpB,QAAwB,EACxB,KAAc,EACd,eAAkC,EAClC,OAAe,EACA,EAAE;IACjB,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,IAAA,gCAAuB,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;QAC1E,IAAA,sCAA0B,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC;KACrE,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAXW,QAAA,iBAAiB,qBAW5B"}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import stream from 'stream';
|
|
1
3
|
import type { Input } from './types';
|
|
4
|
+
export declare class StreamInterceptor extends stream.Transform {
|
|
5
|
+
private chunks;
|
|
6
|
+
output(): string;
|
|
7
|
+
_transform(chunk: any, _encoding: BufferEncoding, callback: stream.TransformCallback): void;
|
|
8
|
+
}
|
|
2
9
|
export declare const externalLint: (input: Input) => Promise<void>;
|