Skip to content

Commit 540f885

Browse files
Add token revokal as post action (#18)
* add token deletion [skip ci] * add locally-built dist for testing [skip ci]
1 parent 3dcde83 commit 540f885

File tree

9 files changed

+1581
-8
lines changed

9 files changed

+1581
-8
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,3 @@ coverage
1313
.cache
1414
.DS_Store
1515
lib
16-
dist

dist/action.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export declare function run(): Promise<void>;
2+
export declare function cleanup(): Promise<void>;

dist/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {};

dist/index.js

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/licenses.txt

Lines changed: 1538 additions & 0 deletions
Large diffs are not rendered by default.

dist/state.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export declare const isPost: boolean;

dist/util.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export declare function getAppSlugName(): string;
2+
export declare function getAppTokenName(): string;
3+
export declare function getAppInfo(): Promise<{
4+
token: string;
5+
slug: string;
6+
}>;
7+
export declare function createSecret(token: string, secretName: string, secretValue: string): Promise<void>;
8+
export declare function deleteSecret(token: string, secretName: string): Promise<void>;
9+
export declare function deleteToken(token: string): Promise<void>;

src/action.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export async function run() {
1818

1919
core.setOutput('BOT_NAME', slug)
2020
core.setOutput('BOT_TOKEN', token)
21+
// save token in state to be used in cleanup
22+
core.saveState('token', token)
2123

2224
core.exportVariable(appSlugName, slug)
2325
core.exportVariable(appTokenName, token)
@@ -31,13 +33,18 @@ export async function cleanup() {
3133
try {
3234
const clean = core.getBooleanInput('clean')
3335
const saveToSecret = core.getBooleanInput('secret')
34-
if (saveToSecret && clean) {
35-
const { token } = await util.getAppInfo()
36-
const appSlugName = util.getAppSlugName()
37-
const appTokenName = util.getAppTokenName()
38-
await util.deleteSecret(token, appSlugName)
39-
await util.deleteSecret(token, appTokenName)
40-
core.info(`Secrets "${appSlugName}" and "${appTokenName}" was removed`)
36+
const token = core.getState('token');
37+
if (clean) {
38+
if (saveToSecret) {
39+
const { token } = await util.getAppInfo()
40+
const appSlugName = util.getAppSlugName()
41+
const appTokenName = util.getAppTokenName()
42+
await util.deleteSecret(token, appSlugName)
43+
await util.deleteSecret(token, appTokenName)
44+
core.info(`Secrets "${appSlugName}" and "${appTokenName}" were removed`)
45+
}
46+
await util.deleteToken(token);
47+
core.info("Token revoked");
4148
}
4249
} catch (e) {
4350
core.error(e)

src/util.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,10 @@ export async function deleteSecret(token: string, secretName: string) {
105105
},
106106
)
107107
}
108+
109+
export async function deleteToken(token: string) {
110+
const octokit = new Octokit({ auth: token })
111+
await octokit.request(
112+
'DELETE /installation/token',
113+
)
114+
}

0 commit comments

Comments
 (0)