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
78interface 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
1617function 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
2526async 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
9290async 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
108106async 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
123121async 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
166163export 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}
0 commit comments