@actions/core 1.5.0 → 1.7.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/README.md +53 -0
- package/lib/core.d.ts +9 -0
- package/lib/core.js +13 -1
- package/lib/core.js.map +1 -1
- package/lib/markdown-summary.d.ts +198 -0
- package/lib/markdown-summary.js +279 -0
- package/lib/markdown-summary.js.map +1 -0
- package/lib/oidc-utils.d.ts +7 -0
- package/lib/oidc-utils.js +77 -0
- package/lib/oidc-utils.js.map +1 -0
- package/lib/utils.js +1 -0
- package/lib/utils.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -142,6 +142,11 @@ export interface AnnotationProperties {
|
|
|
142
142
|
*/
|
|
143
143
|
title?: string
|
|
144
144
|
|
|
145
|
+
/**
|
|
146
|
+
* The name of the file for which the annotation should be created.
|
|
147
|
+
*/
|
|
148
|
+
file?: string
|
|
149
|
+
|
|
145
150
|
/**
|
|
146
151
|
* The start line for the annotation.
|
|
147
152
|
*/
|
|
@@ -257,3 +262,51 @@ var pid = core.getState("pidToKill");
|
|
|
257
262
|
|
|
258
263
|
process.kill(pid);
|
|
259
264
|
```
|
|
265
|
+
|
|
266
|
+
#### OIDC Token
|
|
267
|
+
|
|
268
|
+
You can use these methods to interact with the GitHub OIDC provider and get a JWT ID token which would help to get access token from third party cloud providers.
|
|
269
|
+
|
|
270
|
+
**Method Name**: getIDToken()
|
|
271
|
+
|
|
272
|
+
**Inputs**
|
|
273
|
+
|
|
274
|
+
audience : optional
|
|
275
|
+
|
|
276
|
+
**Outputs**
|
|
277
|
+
|
|
278
|
+
A [JWT](https://jwt.io/) ID Token
|
|
279
|
+
|
|
280
|
+
In action's `main.ts`:
|
|
281
|
+
```js
|
|
282
|
+
const core = require('@actions/core');
|
|
283
|
+
async function getIDTokenAction(): Promise<void> {
|
|
284
|
+
|
|
285
|
+
const audience = core.getInput('audience', {required: false})
|
|
286
|
+
|
|
287
|
+
const id_token1 = await core.getIDToken() // ID Token with default audience
|
|
288
|
+
const id_token2 = await core.getIDToken(audience) // ID token with custom audience
|
|
289
|
+
|
|
290
|
+
// this id_token can be used to get access token from third party cloud providers
|
|
291
|
+
}
|
|
292
|
+
getIDTokenAction()
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
In action's `actions.yml`:
|
|
296
|
+
|
|
297
|
+
```yaml
|
|
298
|
+
name: 'GetIDToken'
|
|
299
|
+
description: 'Get ID token from Github OIDC provider'
|
|
300
|
+
inputs:
|
|
301
|
+
audience:
|
|
302
|
+
description: 'Audience for which the ID token is intended for'
|
|
303
|
+
required: false
|
|
304
|
+
outputs:
|
|
305
|
+
id_token1:
|
|
306
|
+
description: 'ID token obtained from OIDC provider'
|
|
307
|
+
id_token2:
|
|
308
|
+
description: 'ID token obtained from OIDC provider'
|
|
309
|
+
runs:
|
|
310
|
+
using: 'node12'
|
|
311
|
+
main: 'dist/index.js'
|
|
312
|
+
```
|
package/lib/core.d.ts
CHANGED
|
@@ -29,6 +29,10 @@ export interface AnnotationProperties {
|
|
|
29
29
|
* A title for the annotation.
|
|
30
30
|
*/
|
|
31
31
|
title?: string;
|
|
32
|
+
/**
|
|
33
|
+
* The path of the file for which the annotation should be created.
|
|
34
|
+
*/
|
|
35
|
+
file?: string;
|
|
32
36
|
/**
|
|
33
37
|
* The start line for the annotation.
|
|
34
38
|
*/
|
|
@@ -179,3 +183,8 @@ export declare function saveState(name: string, value: any): void;
|
|
|
179
183
|
* @returns string
|
|
180
184
|
*/
|
|
181
185
|
export declare function getState(name: string): string;
|
|
186
|
+
export declare function getIDToken(aud?: string): Promise<string>;
|
|
187
|
+
/**
|
|
188
|
+
* Markdown summary exports
|
|
189
|
+
*/
|
|
190
|
+
export { markdownSummary } from './markdown-summary';
|
package/lib/core.js
CHANGED
|
@@ -28,12 +28,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
|
|
31
|
+
exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
|
|
32
32
|
const command_1 = require("./command");
|
|
33
33
|
const file_command_1 = require("./file-command");
|
|
34
34
|
const utils_1 = require("./utils");
|
|
35
35
|
const os = __importStar(require("os"));
|
|
36
36
|
const path = __importStar(require("path"));
|
|
37
|
+
const oidc_utils_1 = require("./oidc-utils");
|
|
37
38
|
/**
|
|
38
39
|
* The code to exit an action
|
|
39
40
|
*/
|
|
@@ -302,4 +303,15 @@ function getState(name) {
|
|
|
302
303
|
return process.env[`STATE_${name}`] || '';
|
|
303
304
|
}
|
|
304
305
|
exports.getState = getState;
|
|
306
|
+
function getIDToken(aud) {
|
|
307
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
308
|
+
return yield oidc_utils_1.OidcClient.getIDToken(aud);
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
exports.getIDToken = getIDToken;
|
|
312
|
+
/**
|
|
313
|
+
* Markdown summary exports
|
|
314
|
+
*/
|
|
315
|
+
var markdown_summary_1 = require("./markdown-summary");
|
|
316
|
+
Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return markdown_summary_1.markdownSummary; } });
|
|
305
317
|
//# sourceMappingURL=core.js.map
|
package/lib/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA6C;AAC7C,iDAA+D;AAC/D,mCAA2D;AAE3D,uCAAwB;AACxB,2CAA4B;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export declare const SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY";
|
|
2
|
+
export declare const SUMMARY_DOCS_URL = "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-markdown-summary";
|
|
3
|
+
export declare type SummaryTableRow = (SummaryTableCell | string)[];
|
|
4
|
+
export interface SummaryTableCell {
|
|
5
|
+
/**
|
|
6
|
+
* Cell content
|
|
7
|
+
*/
|
|
8
|
+
data: string;
|
|
9
|
+
/**
|
|
10
|
+
* Render cell as header
|
|
11
|
+
* (optional) default: false
|
|
12
|
+
*/
|
|
13
|
+
header?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Number of columns the cell extends
|
|
16
|
+
* (optional) default: '1'
|
|
17
|
+
*/
|
|
18
|
+
colspan?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Number of rows the cell extends
|
|
21
|
+
* (optional) default: '1'
|
|
22
|
+
*/
|
|
23
|
+
rowspan?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SummaryImageOptions {
|
|
26
|
+
/**
|
|
27
|
+
* The width of the image in pixels. Must be an integer without a unit.
|
|
28
|
+
* (optional)
|
|
29
|
+
*/
|
|
30
|
+
width?: string;
|
|
31
|
+
/**
|
|
32
|
+
* The height of the image in pixels. Must be an integer without a unit.
|
|
33
|
+
* (optional)
|
|
34
|
+
*/
|
|
35
|
+
height?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SummaryWriteOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Replace all existing content in summary file with buffer contents
|
|
40
|
+
* (optional) default: false
|
|
41
|
+
*/
|
|
42
|
+
overwrite?: boolean;
|
|
43
|
+
}
|
|
44
|
+
declare class MarkdownSummary {
|
|
45
|
+
private _buffer;
|
|
46
|
+
private _filePath?;
|
|
47
|
+
constructor();
|
|
48
|
+
/**
|
|
49
|
+
* Finds the summary file path from the environment, rejects if env var is not found or file does not exist
|
|
50
|
+
* Also checks r/w permissions.
|
|
51
|
+
*
|
|
52
|
+
* @returns step summary file path
|
|
53
|
+
*/
|
|
54
|
+
private filePath;
|
|
55
|
+
/**
|
|
56
|
+
* Wraps content in an HTML tag, adding any HTML attributes
|
|
57
|
+
*
|
|
58
|
+
* @param {string} tag HTML tag to wrap
|
|
59
|
+
* @param {string | null} content content within the tag
|
|
60
|
+
* @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
|
|
61
|
+
*
|
|
62
|
+
* @returns {string} content wrapped in HTML element
|
|
63
|
+
*/
|
|
64
|
+
private wrap;
|
|
65
|
+
/**
|
|
66
|
+
* Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
|
|
67
|
+
*
|
|
68
|
+
* @param {SummaryWriteOptions} [options] (optional) options for write operation
|
|
69
|
+
*
|
|
70
|
+
* @returns {Promise<MarkdownSummary>} markdown summary instance
|
|
71
|
+
*/
|
|
72
|
+
write(options?: SummaryWriteOptions): Promise<MarkdownSummary>;
|
|
73
|
+
/**
|
|
74
|
+
* Clears the summary buffer and wipes the summary file
|
|
75
|
+
*
|
|
76
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
77
|
+
*/
|
|
78
|
+
clear(): Promise<MarkdownSummary>;
|
|
79
|
+
/**
|
|
80
|
+
* Returns the current summary buffer as a string
|
|
81
|
+
*
|
|
82
|
+
* @returns {string} string of summary buffer
|
|
83
|
+
*/
|
|
84
|
+
stringify(): string;
|
|
85
|
+
/**
|
|
86
|
+
* If the summary buffer is empty
|
|
87
|
+
*
|
|
88
|
+
* @returns {boolen} true if the buffer is empty
|
|
89
|
+
*/
|
|
90
|
+
isEmptyBuffer(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Resets the summary buffer without writing to summary file
|
|
93
|
+
*
|
|
94
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
95
|
+
*/
|
|
96
|
+
emptyBuffer(): MarkdownSummary;
|
|
97
|
+
/**
|
|
98
|
+
* Adds raw text to the summary buffer
|
|
99
|
+
*
|
|
100
|
+
* @param {string} text content to add
|
|
101
|
+
* @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
|
|
102
|
+
*
|
|
103
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
104
|
+
*/
|
|
105
|
+
addRaw(text: string, addEOL?: boolean): MarkdownSummary;
|
|
106
|
+
/**
|
|
107
|
+
* Adds the operating system-specific end-of-line marker to the buffer
|
|
108
|
+
*
|
|
109
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
110
|
+
*/
|
|
111
|
+
addEOL(): MarkdownSummary;
|
|
112
|
+
/**
|
|
113
|
+
* Adds an HTML codeblock to the summary buffer
|
|
114
|
+
*
|
|
115
|
+
* @param {string} code content to render within fenced code block
|
|
116
|
+
* @param {string} lang (optional) language to syntax highlight code
|
|
117
|
+
*
|
|
118
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
119
|
+
*/
|
|
120
|
+
addCodeBlock(code: string, lang?: string): MarkdownSummary;
|
|
121
|
+
/**
|
|
122
|
+
* Adds an HTML list to the summary buffer
|
|
123
|
+
*
|
|
124
|
+
* @param {string[]} items list of items to render
|
|
125
|
+
* @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
|
|
126
|
+
*
|
|
127
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
128
|
+
*/
|
|
129
|
+
addList(items: string[], ordered?: boolean): MarkdownSummary;
|
|
130
|
+
/**
|
|
131
|
+
* Adds an HTML table to the summary buffer
|
|
132
|
+
*
|
|
133
|
+
* @param {SummaryTableCell[]} rows table rows
|
|
134
|
+
*
|
|
135
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
136
|
+
*/
|
|
137
|
+
addTable(rows: SummaryTableRow[]): MarkdownSummary;
|
|
138
|
+
/**
|
|
139
|
+
* Adds a collapsable HTML details element to the summary buffer
|
|
140
|
+
*
|
|
141
|
+
* @param {string} label text for the closed state
|
|
142
|
+
* @param {string} content collapsable content
|
|
143
|
+
*
|
|
144
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
145
|
+
*/
|
|
146
|
+
addDetails(label: string, content: string): MarkdownSummary;
|
|
147
|
+
/**
|
|
148
|
+
* Adds an HTML image tag to the summary buffer
|
|
149
|
+
*
|
|
150
|
+
* @param {string} src path to the image you to embed
|
|
151
|
+
* @param {string} alt text description of the image
|
|
152
|
+
* @param {SummaryImageOptions} options (optional) addition image attributes
|
|
153
|
+
*
|
|
154
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
155
|
+
*/
|
|
156
|
+
addImage(src: string, alt: string, options?: SummaryImageOptions): MarkdownSummary;
|
|
157
|
+
/**
|
|
158
|
+
* Adds an HTML section heading element
|
|
159
|
+
*
|
|
160
|
+
* @param {string} text heading text
|
|
161
|
+
* @param {number | string} [level=1] (optional) the heading level, default: 1
|
|
162
|
+
*
|
|
163
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
164
|
+
*/
|
|
165
|
+
addHeading(text: string, level?: number | string): MarkdownSummary;
|
|
166
|
+
/**
|
|
167
|
+
* Adds an HTML thematic break (<hr>) to the summary buffer
|
|
168
|
+
*
|
|
169
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
170
|
+
*/
|
|
171
|
+
addSeparator(): MarkdownSummary;
|
|
172
|
+
/**
|
|
173
|
+
* Adds an HTML line break (<br>) to the summary buffer
|
|
174
|
+
*
|
|
175
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
176
|
+
*/
|
|
177
|
+
addBreak(): MarkdownSummary;
|
|
178
|
+
/**
|
|
179
|
+
* Adds an HTML blockquote to the summary buffer
|
|
180
|
+
*
|
|
181
|
+
* @param {string} text quote text
|
|
182
|
+
* @param {string} cite (optional) citation url
|
|
183
|
+
*
|
|
184
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
185
|
+
*/
|
|
186
|
+
addQuote(text: string, cite?: string): MarkdownSummary;
|
|
187
|
+
/**
|
|
188
|
+
* Adds an HTML anchor tag to the summary buffer
|
|
189
|
+
*
|
|
190
|
+
* @param {string} text link text/content
|
|
191
|
+
* @param {string} href hyperlink
|
|
192
|
+
*
|
|
193
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
194
|
+
*/
|
|
195
|
+
addLink(text: string, href: string): MarkdownSummary;
|
|
196
|
+
}
|
|
197
|
+
export declare const markdownSummary: MarkdownSummary;
|
|
198
|
+
export {};
|
|
@@ -0,0 +1,279 @@
|
|
|
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.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;
|
|
13
|
+
const os_1 = require("os");
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const { access, appendFile, writeFile } = fs_1.promises;
|
|
16
|
+
exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';
|
|
17
|
+
exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-markdown-summary';
|
|
18
|
+
class MarkdownSummary {
|
|
19
|
+
constructor() {
|
|
20
|
+
this._buffer = '';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Finds the summary file path from the environment, rejects if env var is not found or file does not exist
|
|
24
|
+
* Also checks r/w permissions.
|
|
25
|
+
*
|
|
26
|
+
* @returns step summary file path
|
|
27
|
+
*/
|
|
28
|
+
filePath() {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
if (this._filePath) {
|
|
31
|
+
return this._filePath;
|
|
32
|
+
}
|
|
33
|
+
const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];
|
|
34
|
+
if (!pathFromEnv) {
|
|
35
|
+
throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports markdown summaries.`);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
|
|
42
|
+
}
|
|
43
|
+
this._filePath = pathFromEnv;
|
|
44
|
+
return this._filePath;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Wraps content in an HTML tag, adding any HTML attributes
|
|
49
|
+
*
|
|
50
|
+
* @param {string} tag HTML tag to wrap
|
|
51
|
+
* @param {string | null} content content within the tag
|
|
52
|
+
* @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
|
|
53
|
+
*
|
|
54
|
+
* @returns {string} content wrapped in HTML element
|
|
55
|
+
*/
|
|
56
|
+
wrap(tag, content, attrs = {}) {
|
|
57
|
+
const htmlAttrs = Object.entries(attrs)
|
|
58
|
+
.map(([key, value]) => ` ${key}="${value}"`)
|
|
59
|
+
.join('');
|
|
60
|
+
if (!content) {
|
|
61
|
+
return `<${tag}${htmlAttrs}>`;
|
|
62
|
+
}
|
|
63
|
+
return `<${tag}${htmlAttrs}>${content}</${tag}>`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
|
|
67
|
+
*
|
|
68
|
+
* @param {SummaryWriteOptions} [options] (optional) options for write operation
|
|
69
|
+
*
|
|
70
|
+
* @returns {Promise<MarkdownSummary>} markdown summary instance
|
|
71
|
+
*/
|
|
72
|
+
write(options) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);
|
|
75
|
+
const filePath = yield this.filePath();
|
|
76
|
+
const writeFunc = overwrite ? writeFile : appendFile;
|
|
77
|
+
yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });
|
|
78
|
+
return this.emptyBuffer();
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Clears the summary buffer and wipes the summary file
|
|
83
|
+
*
|
|
84
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
85
|
+
*/
|
|
86
|
+
clear() {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
return this.emptyBuffer().write({ overwrite: true });
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns the current summary buffer as a string
|
|
93
|
+
*
|
|
94
|
+
* @returns {string} string of summary buffer
|
|
95
|
+
*/
|
|
96
|
+
stringify() {
|
|
97
|
+
return this._buffer;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* If the summary buffer is empty
|
|
101
|
+
*
|
|
102
|
+
* @returns {boolen} true if the buffer is empty
|
|
103
|
+
*/
|
|
104
|
+
isEmptyBuffer() {
|
|
105
|
+
return this._buffer.length === 0;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Resets the summary buffer without writing to summary file
|
|
109
|
+
*
|
|
110
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
111
|
+
*/
|
|
112
|
+
emptyBuffer() {
|
|
113
|
+
this._buffer = '';
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Adds raw text to the summary buffer
|
|
118
|
+
*
|
|
119
|
+
* @param {string} text content to add
|
|
120
|
+
* @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
|
|
121
|
+
*
|
|
122
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
123
|
+
*/
|
|
124
|
+
addRaw(text, addEOL = false) {
|
|
125
|
+
this._buffer += text;
|
|
126
|
+
return addEOL ? this.addEOL() : this;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Adds the operating system-specific end-of-line marker to the buffer
|
|
130
|
+
*
|
|
131
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
132
|
+
*/
|
|
133
|
+
addEOL() {
|
|
134
|
+
return this.addRaw(os_1.EOL);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Adds an HTML codeblock to the summary buffer
|
|
138
|
+
*
|
|
139
|
+
* @param {string} code content to render within fenced code block
|
|
140
|
+
* @param {string} lang (optional) language to syntax highlight code
|
|
141
|
+
*
|
|
142
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
143
|
+
*/
|
|
144
|
+
addCodeBlock(code, lang) {
|
|
145
|
+
const attrs = Object.assign({}, (lang && { lang }));
|
|
146
|
+
const element = this.wrap('pre', this.wrap('code', code), attrs);
|
|
147
|
+
return this.addRaw(element).addEOL();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Adds an HTML list to the summary buffer
|
|
151
|
+
*
|
|
152
|
+
* @param {string[]} items list of items to render
|
|
153
|
+
* @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
|
|
154
|
+
*
|
|
155
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
156
|
+
*/
|
|
157
|
+
addList(items, ordered = false) {
|
|
158
|
+
const tag = ordered ? 'ol' : 'ul';
|
|
159
|
+
const listItems = items.map(item => this.wrap('li', item)).join('');
|
|
160
|
+
const element = this.wrap(tag, listItems);
|
|
161
|
+
return this.addRaw(element).addEOL();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Adds an HTML table to the summary buffer
|
|
165
|
+
*
|
|
166
|
+
* @param {SummaryTableCell[]} rows table rows
|
|
167
|
+
*
|
|
168
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
169
|
+
*/
|
|
170
|
+
addTable(rows) {
|
|
171
|
+
const tableBody = rows
|
|
172
|
+
.map(row => {
|
|
173
|
+
const cells = row
|
|
174
|
+
.map(cell => {
|
|
175
|
+
if (typeof cell === 'string') {
|
|
176
|
+
return this.wrap('td', cell);
|
|
177
|
+
}
|
|
178
|
+
const { header, data, colspan, rowspan } = cell;
|
|
179
|
+
const tag = header ? 'th' : 'td';
|
|
180
|
+
const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));
|
|
181
|
+
return this.wrap(tag, data, attrs);
|
|
182
|
+
})
|
|
183
|
+
.join('');
|
|
184
|
+
return this.wrap('tr', cells);
|
|
185
|
+
})
|
|
186
|
+
.join('');
|
|
187
|
+
const element = this.wrap('table', tableBody);
|
|
188
|
+
return this.addRaw(element).addEOL();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Adds a collapsable HTML details element to the summary buffer
|
|
192
|
+
*
|
|
193
|
+
* @param {string} label text for the closed state
|
|
194
|
+
* @param {string} content collapsable content
|
|
195
|
+
*
|
|
196
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
197
|
+
*/
|
|
198
|
+
addDetails(label, content) {
|
|
199
|
+
const element = this.wrap('details', this.wrap('summary', label) + content);
|
|
200
|
+
return this.addRaw(element).addEOL();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Adds an HTML image tag to the summary buffer
|
|
204
|
+
*
|
|
205
|
+
* @param {string} src path to the image you to embed
|
|
206
|
+
* @param {string} alt text description of the image
|
|
207
|
+
* @param {SummaryImageOptions} options (optional) addition image attributes
|
|
208
|
+
*
|
|
209
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
210
|
+
*/
|
|
211
|
+
addImage(src, alt, options) {
|
|
212
|
+
const { width, height } = options || {};
|
|
213
|
+
const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));
|
|
214
|
+
const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));
|
|
215
|
+
return this.addRaw(element).addEOL();
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Adds an HTML section heading element
|
|
219
|
+
*
|
|
220
|
+
* @param {string} text heading text
|
|
221
|
+
* @param {number | string} [level=1] (optional) the heading level, default: 1
|
|
222
|
+
*
|
|
223
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
224
|
+
*/
|
|
225
|
+
addHeading(text, level) {
|
|
226
|
+
const tag = `h${level}`;
|
|
227
|
+
const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)
|
|
228
|
+
? tag
|
|
229
|
+
: 'h1';
|
|
230
|
+
const element = this.wrap(allowedTag, text);
|
|
231
|
+
return this.addRaw(element).addEOL();
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Adds an HTML thematic break (<hr>) to the summary buffer
|
|
235
|
+
*
|
|
236
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
237
|
+
*/
|
|
238
|
+
addSeparator() {
|
|
239
|
+
const element = this.wrap('hr', null);
|
|
240
|
+
return this.addRaw(element).addEOL();
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Adds an HTML line break (<br>) to the summary buffer
|
|
244
|
+
*
|
|
245
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
246
|
+
*/
|
|
247
|
+
addBreak() {
|
|
248
|
+
const element = this.wrap('br', null);
|
|
249
|
+
return this.addRaw(element).addEOL();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Adds an HTML blockquote to the summary buffer
|
|
253
|
+
*
|
|
254
|
+
* @param {string} text quote text
|
|
255
|
+
* @param {string} cite (optional) citation url
|
|
256
|
+
*
|
|
257
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
258
|
+
*/
|
|
259
|
+
addQuote(text, cite) {
|
|
260
|
+
const attrs = Object.assign({}, (cite && { cite }));
|
|
261
|
+
const element = this.wrap('blockquote', text, attrs);
|
|
262
|
+
return this.addRaw(element).addEOL();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Adds an HTML anchor tag to the summary buffer
|
|
266
|
+
*
|
|
267
|
+
* @param {string} text link text/content
|
|
268
|
+
* @param {string} href hyperlink
|
|
269
|
+
*
|
|
270
|
+
* @returns {MarkdownSummary} markdown summary instance
|
|
271
|
+
*/
|
|
272
|
+
addLink(text, href) {
|
|
273
|
+
const element = this.wrap('a', text, { href });
|
|
274
|
+
return this.addRaw(element).addEOL();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// singleton export
|
|
278
|
+
exports.markdownSummary = new MarkdownSummary();
|
|
279
|
+
//# sourceMappingURL=markdown-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-summary.js","sourceRoot":"","sources":["../src/markdown-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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.OidcClient = void 0;
|
|
13
|
+
const http_client_1 = require("@actions/http-client");
|
|
14
|
+
const auth_1 = require("@actions/http-client/auth");
|
|
15
|
+
const core_1 = require("./core");
|
|
16
|
+
class OidcClient {
|
|
17
|
+
static createHttpClient(allowRetry = true, maxRetry = 10) {
|
|
18
|
+
const requestOptions = {
|
|
19
|
+
allowRetries: allowRetry,
|
|
20
|
+
maxRetries: maxRetry
|
|
21
|
+
};
|
|
22
|
+
return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
|
|
23
|
+
}
|
|
24
|
+
static getRequestToken() {
|
|
25
|
+
const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
|
|
26
|
+
if (!token) {
|
|
27
|
+
throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
|
|
28
|
+
}
|
|
29
|
+
return token;
|
|
30
|
+
}
|
|
31
|
+
static getIDTokenUrl() {
|
|
32
|
+
const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
|
|
33
|
+
if (!runtimeUrl) {
|
|
34
|
+
throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
|
|
35
|
+
}
|
|
36
|
+
return runtimeUrl;
|
|
37
|
+
}
|
|
38
|
+
static getCall(id_token_url) {
|
|
39
|
+
var _a;
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const httpclient = OidcClient.createHttpClient();
|
|
42
|
+
const res = yield httpclient
|
|
43
|
+
.getJson(id_token_url)
|
|
44
|
+
.catch(error => {
|
|
45
|
+
throw new Error(`Failed to get ID Token. \n
|
|
46
|
+
Error Code : ${error.statusCode}\n
|
|
47
|
+
Error Message: ${error.result.message}`);
|
|
48
|
+
});
|
|
49
|
+
const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
|
|
50
|
+
if (!id_token) {
|
|
51
|
+
throw new Error('Response json body do not have ID Token field');
|
|
52
|
+
}
|
|
53
|
+
return id_token;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
static getIDToken(audience) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
try {
|
|
59
|
+
// New ID Token is requested from action service
|
|
60
|
+
let id_token_url = OidcClient.getIDTokenUrl();
|
|
61
|
+
if (audience) {
|
|
62
|
+
const encodedAudience = encodeURIComponent(audience);
|
|
63
|
+
id_token_url = `${id_token_url}&audience=${encodedAudience}`;
|
|
64
|
+
}
|
|
65
|
+
core_1.debug(`ID token url is ${id_token_url}`);
|
|
66
|
+
const id_token = yield OidcClient.getCall(id_token_url);
|
|
67
|
+
core_1.setSecret(id_token);
|
|
68
|
+
return id_token;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`Error message: ${error.message}`);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.OidcClient = OidcClient;
|
|
77
|
+
//# sourceMappingURL=oidc-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc-utils.js","sourceRoot":"","sources":["../src/oidc-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,sDAA+C;AAC/C,oDAAiE;AACjE,iCAAuC;AAKvC,MAAa,UAAU;IACb,MAAM,CAAC,gBAAgB,CAC7B,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,EAAE;QAEb,MAAM,cAAc,GAAoB;YACtC,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,QAAQ;SACrB,CAAA;QAED,OAAO,IAAI,wBAAU,CACnB,qBAAqB,EACrB,CAAC,IAAI,8BAAuB,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,EAC3D,cAAc,CACf,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,eAAe;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC3D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,MAAM,CAAC,aAAa;QAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAO,OAAO,CAAC,YAAoB;;;YAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAA;YAEhD,MAAM,GAAG,GAAG,MAAM,UAAU;iBACzB,OAAO,CAAgB,YAAY,CAAC;iBACpC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,MAAM,IAAI,KAAK,CACb;uBACa,KAAK,CAAC,UAAU;yBACd,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CACtC,CAAA;YACH,CAAC,CAAC,CAAA;YAEJ,MAAM,QAAQ,SAAG,GAAG,CAAC,MAAM,0CAAE,KAAK,CAAA;YAClC,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;aACjE;YACD,OAAO,QAAQ,CAAA;;KAChB;IAED,MAAM,CAAO,UAAU,CAAC,QAAiB;;YACvC,IAAI;gBACF,gDAAgD;gBAChD,IAAI,YAAY,GAAW,UAAU,CAAC,aAAa,EAAE,CAAA;gBACrD,IAAI,QAAQ,EAAE;oBACZ,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;oBACpD,YAAY,GAAG,GAAG,YAAY,aAAa,eAAe,EAAE,CAAA;iBAC7D;gBAED,YAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;gBAExC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBACvD,gBAAS,CAAC,QAAQ,CAAC,CAAA;gBACnB,OAAO,QAAQ,CAAA;aAChB;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;aACnD;QACH,CAAC;KAAA;CACF;AAzED,gCAyEC"}
|
package/lib/utils.js
CHANGED
|
@@ -29,6 +29,7 @@ function toCommandProperties(annotationProperties) {
|
|
|
29
29
|
}
|
|
30
30
|
return {
|
|
31
31
|
title: annotationProperties.title,
|
|
32
|
+
file: annotationProperties.file,
|
|
32
33
|
line: annotationProperties.startLine,
|
|
33
34
|
endLine: annotationProperties.endLine,
|
|
34
35
|
col: annotationProperties.startColumn,
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,uDAAuD;;;AAKvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,oBAA0C;IAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,CAAA;KACV;IAED,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,KAAK;QACjC,IAAI,EAAE,oBAAoB,CAAC,SAAS;QACpC,OAAO,EAAE,oBAAoB,CAAC,OAAO;QACrC,GAAG,EAAE,oBAAoB,CAAC,WAAW;QACrC,SAAS,EAAE,oBAAoB,CAAC,SAAS;KAC1C,CAAA;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,mCAAmC;AACnC,uDAAuD;;;AAKvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,KAAU;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACzC,OAAO,EAAE,CAAA;KACV;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;QAC/D,OAAO,KAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAPD,wCAOC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,oBAA0C;IAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,CAAA;KACV;IAED,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,KAAK;QACjC,IAAI,EAAE,oBAAoB,CAAC,IAAI;QAC/B,IAAI,EAAE,oBAAoB,CAAC,SAAS;QACpC,OAAO,EAAE,oBAAoB,CAAC,OAAO;QACrC,GAAG,EAAE,oBAAoB,CAAC,WAAW;QACrC,SAAS,EAAE,oBAAoB,CAAC,SAAS;KAC1C,CAAA;AACH,CAAC;AAfD,kDAeC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actions/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Actions core lib",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github",
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/actions/toolkit/issues"
|
|
37
37
|
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@actions/http-client": "^1.0.11"
|
|
40
|
+
},
|
|
38
41
|
"devDependencies": {
|
|
39
42
|
"@types/node": "^12.0.2"
|
|
40
43
|
}
|