Skip to content

Commit 3568342

Browse files
committed
build: update main script
1 parent 7e42163 commit 3568342

File tree

2 files changed

+85
-90
lines changed

2 files changed

+85
-90
lines changed

src/execute.ts

Lines changed: 83 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1+
/* eslint-disable camelcase */
12
/* eslint-disable no-console */
2-
import { getInput, setFailed, info, error } from '@actions/core'
3-
import * as github from '@actions/github'
4-
import { Octokit } from '@octokit/core'
5-
import { RequestError } from '@octokit/request-error'
3+
import { getInput, setFailed, info, error } from '@actions/core';
4+
import * as github from '@actions/github';
5+
import { Octokit } from '@octokit/core';
6+
import { RequestError } from '@octokit/request-error';
67

78
interface ListDeploymentIDs { owner: string; repo: string; environment: string; ref: string; limit: number }
8-
interface Deployment { owner: string;repo: string;deploymentId: number }
9-
interface Context { owner: string;repo: string }
10-
export interface DeploymentRef { deploymentId: number;ref: string }
9+
interface Deployment { owner: string; repo: string; deploymentId: number }
10+
interface Context { owner: string; repo: string }
11+
export interface DeploymentRef { deploymentId: number; ref: string }
1112

1213
/*
1314
Func > getNum
1415
*/
1516

1617
function getNum( num: string | '0' )
1718
{
18-
return Math.floor( Number( num ) ) || 0
19+
return Math.floor( Number( num ) ) || 0;
1920
}
2021

2122
/*
@@ -24,8 +25,7 @@ function getNum( num: string | '0' )
2425

2526
async function listDeployments( client: Octokit, { owner, repo, environment, ref = '', limit = 100 }: ListDeploymentIDs, page = 0 ): Promise < DeploymentRef[] >
2627
{
27-
28-
info( ` › 📝 Searching \x1b[38;5;9menv ${ environment }\x1b[0m` )
28+
info( ` › 📝 Searching \x1b[38;5;9menv ${ environment }\x1b[0m` );
2929

3030
const { data } = await client.request( 'GET /repos/{owner}/{repo}/deployments',
3131
{
@@ -35,30 +35,28 @@ async function listDeployments( client: Octokit, { owner, repo, environment, ref
3535
ref,
3636
per_page: limit, // number of items per page, max 100
3737
page
38-
} )
38+
});
3939

4040
/*
4141
Limit not reached || limit set to default 100
4242
loop function again to page 2+
4343
*/
4444

45-
const deploymentRefs: DeploymentRef[] = data.map( ( deployment ) => ( { deploymentId: deployment.id, ref: deployment.ref } ) )
46-
const itemsTotal = deploymentRefs.length
45+
const deploymentRefs: DeploymentRef[] = data.map( ( deployment ) => ({ deploymentId: deployment.id, ref: deployment.ref }) );
46+
const itemsTotal = deploymentRefs.length;
4747

4848
if ( !limit || limit === 100 )
4949
{
50-
info( ` › ⚙️ Using default limit of \x1b[38;5;1m${ limit }\x1b[0m` )
50+
info( ` › ⚙️ Using default limit of \x1b[38;5;1m${ limit }\x1b[0m` );
5151
if ( itemsTotal === 100 )
52-
return deploymentRefs.concat( await listDeployments( client, { owner, repo, environment, ref, limit }, page + 1 ) )
53-
52+
return deploymentRefs.concat( await listDeployments( client, { owner, repo, environment, ref, limit }, page + 1 ) );
53+
}
5454
/*
5555
user specified custom limit
5656
*/
57-
58-
}
5957
else if ( limit >= 100 )
6058
{
61-
const pagesNeeded = Math.ceil( limit / 100 )
59+
const pagesNeeded = Math.ceil( limit / 100 );
6260

6361
/*
6462
if total items is less than limit
@@ -67,22 +65,22 @@ async function listDeployments( client: Octokit, { owner, repo, environment, ref
6765

6866
if ( itemsTotal < limit && page < pagesNeeded )
6967
{
70-
info( ` › ⚙️ Using custom limit of \x1b[38;5;1m${ limit }\x1b[0m › reading page \x1b[38;5;32mpage ${ page }/${ pagesNeeded }\x1b[0m` )
71-
return deploymentRefs.concat( await listDeployments( client, { owner, repo, environment, ref, limit }, page + 1 ) )
68+
info( ` › ⚙️ Using custom limit of \x1b[38;5;1m${ limit }\x1b[0m › reading page \x1b[38;5;32mpage ${ page }/${ pagesNeeded }\x1b[0m` );
69+
return deploymentRefs.concat( await listDeployments( client, { owner, repo, environment, ref, limit }, page + 1 ) );
7270
}
7371
}
7472
else if ( limit !== 100 )
7573
{
76-
info( ` › ⚙️ Using custom limit of \x1b[38;5;1m${ limit }\x1b[0m › not using pagination` )
74+
info( ` › ⚙️ Using custom limit of \x1b[38;5;1m${ limit }\x1b[0m › not using pagination` );
7775
}
7876

7977
/*
8078
Done getting items, return deployment list
8179
*/
8280

83-
info( ` › 📚 Finished fetching deployment results` )
81+
info( ` › 📚 Finished fetching deployment results` );
8482

85-
return deploymentRefs
83+
return deploymentRefs;
8684
}
8785

8886
/*
@@ -91,14 +89,14 @@ async function listDeployments( client: Octokit, { owner, repo, environment, ref
9189

9290
async function setDeploymentInactive( client: Octokit, { owner, repo, deploymentId }: Deployment ): Promise < void >
9391
{
94-
info( ` › ✔️ ID \x1b[38;5;244m${ deploymentId }\x1b[0m inactive` )
92+
info( ` › ✔️ ID \x1b[38;5;244m${ deploymentId }\x1b[0m inactive` );
9593
await client.request( 'POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses',
9694
{
9795
owner,
9896
repo,
9997
deployment_id: deploymentId,
10098
state: 'inactive'
101-
} )
99+
});
102100
}
103101

104102
/*
@@ -107,13 +105,13 @@ async function setDeploymentInactive( client: Octokit, { owner, repo, deployment
107105

108106
async function deleteDeploymentById( client: Octokit, { owner, repo, deploymentId }: Deployment ): Promise < void >
109107
{
110-
info( ` › ✔️ ID \x1b[38;5;244m${ deploymentId }\x1b[0m deleted` )
108+
info( ` › ✔️ ID \x1b[38;5;244m${ deploymentId }\x1b[0m deleted` );
111109
await client.request( 'DELETE /repos/{owner}/{repo}/deployments/{deployment_id}',
112110
{
113111
owner,
114112
repo,
115113
deployment_id: deploymentId
116-
} )
114+
});
117115
}
118116

119117
/*
@@ -122,8 +120,7 @@ async function deleteDeploymentById( client: Octokit, { owner, repo, deploymentI
122120

123121
async function deleteTheEnvironment( client: Octokit, environment: string, { owner, repo }: Context ): Promise < void >
124122
{
125-
126-
let existingEnv = false
123+
let existingEnv = false;
127124

128125
try
129126
{
@@ -132,30 +129,30 @@ async function deleteTheEnvironment( client: Octokit, environment: string, { own
132129
owner,
133130
repo,
134131
environment_name: environment
135-
} )
132+
});
136133

137-
existingEnv = typeof getEnvResult === 'object'
134+
existingEnv = typeof getEnvResult === 'object';
138135
}
139136
catch ( err )
140137
{
141138
if ( ( err as RequestError ).status !== 404 )
142139
{
143-
error( 'Error deleting environment' )
144-
throw err
140+
error( 'Error deleting environment' );
141+
throw err;
145142
}
146143
}
147144

148145
if ( existingEnv )
149146
{
150-
info( ` › 🗑️ Deleting \x1b[38;5;9menv ${ environment }\x1b[0m` )
147+
info( ` › 🗑️ Deleting \x1b[38;5;9menv ${ environment }\x1b[0m` );
151148
await client.request( 'DELETE /repos/{owner}/{repo}/environments/{environment_name}',
152149
{
153150
owner,
154151
repo,
155152
environment_name: environment
156-
} )
153+
});
157154

158-
info( ` › ✔️ Deleted` )
155+
info( ` › ✔️ Deleted` );
159156
}
160157
}
161158

@@ -165,141 +162,140 @@ async function deleteTheEnvironment( client: Octokit, environment: string, { own
165162

166163
export async function main(): Promise < void >
167164
{
168-
let deleteDeployment = true
169-
let deleteEnvironment = true
165+
let deleteDeployment = true;
166+
let deleteEnvironment = true;
170167

171-
const { context } = github
172-
const token: string = getInput( 'token', { required: true } )
173-
const environment: string = getInput( 'environment', { required: true } )
174-
const onlyRemoveDeployments: string = getInput( 'onlyRemoveDeployments', { required: false } )
175-
const onlyDeactivateDeployments: string = getInput( 'onlyDeactivateDeployments', { required: false } )
176-
const delayTime: number = getNum( getInput( 'delay', { required: false } ) || '500' )
177-
const limit: number = getNum( getInput( 'limit', { required: false } ) || '100' )
178-
const ref: string = getInput( 'ref', { required: false } )
168+
const { context } = github;
169+
const token: string = getInput( 'token', { required: true });
170+
const environment: string = getInput( 'environment', { required: true });
171+
const onlyRemoveDeployments: string = getInput( 'onlyRemoveDeployments', { required: false });
172+
const onlyDeactivateDeployments: string = getInput( 'onlyDeactivateDeployments', { required: false });
173+
const delayTime: number = getNum( getInput( 'delay', { required: false }) || '500' );
174+
const limit: number = getNum( getInput( 'limit', { required: false }) || '100' );
175+
const ref: string = getInput( 'ref', { required: false });
179176

180-
info( '\n' )
181-
info( ` › 🛫 Starting Deployment Deletion action` )
177+
info( '\n' );
178+
info( ` › 🛫 Starting Deployment Deletion action` );
182179

183180
const client: Octokit = github.getOctokit( token,
184181
{
185182
throttle:
186183
{
187184
onRateLimit: ( retryAfter = 0, options: any ) =>
188185
{
189-
console.warn( `Request quota exhausted for request ${ options.method } ${ options.url }` )
186+
console.warn( `Request quota exhausted for request ${ options.method } ${ options.url }` );
190187
if ( options.request.retryCount === 0 )
191188
{
192189
// only retries once
193-
console.log( `Retrying after ${ retryAfter } seconds!` )
194-
return true
190+
console.log( `Retrying after ${ retryAfter } seconds!` );
191+
return true;
195192
}
196193
},
197194
onAbuseLimit: ( retryAfter = 0, options: any ) =>
198195
{
199-
console.warn( `Abuse detected for request ${ options.method } ${ options.url }` )
196+
console.warn( `Abuse detected for request ${ options.method } ${ options.url }` );
200197
if ( options.request.retryCount === 0 )
201198
{
202199
// only retries once
203-
console.log( `Retrying after ${ retryAfter } seconds!` )
204-
return true
200+
console.log( `Retrying after ${ retryAfter } seconds!` );
201+
return true;
205202
}
206203
}
207204
},
208205
previews: ['ant-man']
209-
} )
206+
});
210207

211208
if ( onlyDeactivateDeployments === 'true' )
212209
{
213-
deleteDeployment = false
214-
deleteEnvironment = false
210+
deleteDeployment = false;
211+
deleteEnvironment = false;
215212
}
216213
else if ( onlyRemoveDeployments === 'true' )
217214
{
218-
deleteEnvironment = false
215+
deleteEnvironment = false;
219216
}
220217

221-
info( ` › 📋 Collect list of deployments` )
218+
info( ` › 📋 Collect list of deployments` );
222219

223220
try
224221
{
225-
const deploymentRefs = await listDeployments( client, { ...context.repo, environment, ref, limit } )
222+
const deploymentRefs = await listDeployments( client, { ...context.repo, environment, ref, limit });
226223

227-
info( ` › 🔍 Found \x1b[38;5;32m${ deploymentRefs.length } deployments\x1b[0m for \x1b[38;5;13mref ${ ref }\x1b[0m` )
224+
info( ` › 🔍 Found \x1b[38;5;32m${ deploymentRefs.length } deployments\x1b[0m for \x1b[38;5;13mref ${ ref }\x1b[0m` );
228225

229-
let deploymentIds: number[]
230-
let deleteDeploymentMessage: string
231-
let deactivateDeploymentMessage: string
232-
let delayStart = 0
233-
const delayIncrement = delayTime
226+
let deploymentIds: number[];
227+
let deleteDeploymentMessage: string;
228+
let deactivateDeploymentMessage: string;
229+
let delayStart = 0;
230+
const delayIncrement = delayTime;
234231

235232
if ( ref.length > 0 )
236233
{
237-
deleteDeploymentMessage = ` › 🗑️ Deleting deployment \x1b[38;5;13mref ${ ref }\x1b[0m in \x1b[38;5;9menv ${ environment }\x1b[0m`
238-
deactivateDeploymentMessage = ` › 🔴 Deactivating deployment \x1b[38;5;13mref ${ ref }\x1b[0m in \x1b[38;5;9menv ${ environment }\x1b[0m`
234+
deleteDeploymentMessage = ` › 🗑️ Deleting deployment \x1b[38;5;13mref ${ ref }\x1b[0m in \x1b[38;5;9menv ${ environment }\x1b[0m`;
235+
deactivateDeploymentMessage = ` › 🔴 Deactivating deployment \x1b[38;5;13mref ${ ref }\x1b[0m in \x1b[38;5;9menv ${ environment }\x1b[0m`;
239236
deploymentIds = deploymentRefs
240237
.filter( ( deployment ) => deployment.ref === ref )
241-
.map( ( deployment ) => deployment.deploymentId )
238+
.map( ( deployment ) => deployment.deploymentId );
242239
}
243240
else
244241
{
245-
deleteDeploymentMessage = ` › 🗑️ Deleting all ${ deploymentRefs.length } deployments in \x1b[38;5;9menv ${ environment }\x1b[0m`
246-
deactivateDeploymentMessage = ` › 🔴 Deactivating all ${ deploymentRefs.length } deployments in \x1b[38;5;9menv ${ environment }\x1b[0m`
242+
deleteDeploymentMessage = ` › 🗑️ Deleting all ${ deploymentRefs.length } deployments in \x1b[38;5;9menv ${ environment }\x1b[0m`;
243+
deactivateDeploymentMessage = ` › 🔴 Deactivating all ${ deploymentRefs.length } deployments in \x1b[38;5;9menv ${ environment }\x1b[0m`;
247244
deploymentIds = deploymentRefs.map(
248245
( deployment ) => deployment.deploymentId
249-
)
246+
);
250247
}
251248

252-
info( deactivateDeploymentMessage )
249+
info( deactivateDeploymentMessage );
253250

254251
/*
255252
So that we don't hit the secondary rate limit, add a delay between each action in the promise
256253
*/
257254

258255
const promiseInactive = deploymentIds.map( ( deploymentId ) =>
259256
{
260-
delayStart += delayIncrement
257+
delayStart += delayIncrement;
261258
return new Promise( ( resolve ) => setTimeout( resolve, delayStart ) ).then( () =>
262-
setDeploymentInactive( client, { ...context.repo, deploymentId } ) )
263-
} )
259+
setDeploymentInactive( client, { ...context.repo, deploymentId }) );
260+
});
264261

265-
await Promise.all( promiseInactive )
262+
await Promise.all( promiseInactive );
266263

267264
/*
268265
Action > Delete Deployment
269266
*/
270267

271268
if ( deleteDeployment )
272269
{
273-
info( deleteDeploymentMessage )
270+
info( deleteDeploymentMessage );
274271

275272
/*
276273
So that we don't hit the secondary rate limit, add a delay between each action in the promise
277274
*/
278275

279276
const promiseDelete = deploymentIds.map( ( deploymentId ) =>
280277
{
281-
delayStart += delayIncrement
278+
delayStart += delayIncrement;
282279
return new Promise( ( resolve ) => setTimeout( resolve, delayStart ) ).then( () =>
283-
deleteDeploymentById( client, { ...context.repo, deploymentId } ) )
284-
} )
280+
deleteDeploymentById( client, { ...context.repo, deploymentId }) );
281+
});
285282

286283
/*
287284
Promise kept
288285
*/
289286

290-
await Promise.all( promiseDelete )
287+
await Promise.all( promiseDelete );
291288
}
292289

293290
if ( deleteEnvironment )
294291
{
295-
await deleteTheEnvironment( client, environment, context.repo )
292+
await deleteTheEnvironment( client, environment, context.repo );
296293
}
297294

298-
info( ' › ✔️ Action completed successfully' )
299-
295+
info( ' › ✔️ Action completed successfully' );
300296
}
301297
catch ( err )
302298
{
303-
setFailed( ( err as RequestError ).message )
299+
setFailed( ( err as RequestError ).message );
304300
}
305301
}

src/main.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
import { main } from './execute'
2-
3-
main()
1+
import { main } from './execute';
2+
main();

0 commit comments

Comments
 (0)