First commit with delete version API
This commit is contained in:
Generated
+11582
-110
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.9.1",
|
"@actions/core": "^1.9.1",
|
||||||
"@actions/github": "^2.1.1",
|
"@actions/github": "^2.1.1",
|
||||||
|
"@octokit/rest": "^19.0.5",
|
||||||
"rxjs": "^6.5.4"
|
"rxjs": "^6.5.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
+1
-1
@@ -146,5 +146,5 @@ export function deleteVersions(input: Input): Observable<boolean> {
|
|||||||
|
|
||||||
const result = finalIds(input)
|
const result = finalIds(input)
|
||||||
|
|
||||||
return result.pipe(concatMap(ids => deletePackageVersions(ids, input.token)))
|
return result.pipe(concatMap(ids => deletePackageVersions(ids, input.owner, input.packageName, input.packageType, input.token)))
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ export class Input {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.packageType === '') {
|
if (this.packageType === '' || this.packageName === '') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import * as github from '@actions/github'
|
||||||
|
import {Octokit} from '@octokit/rest'
|
||||||
|
|
||||||
|
// Centralize all Octokit references by re-exporting
|
||||||
|
export {Octokit} from '@octokit/rest'
|
||||||
|
|
||||||
|
export type OctokitOptions = {
|
||||||
|
baseUrl?: string
|
||||||
|
userAgent?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getOctokit(authToken: string, opts: OctokitOptions) {
|
||||||
|
const options: Octokit.Options = {
|
||||||
|
baseUrl: "https://api.github.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.userAgent) {
|
||||||
|
options.userAgent = opts.userAgent
|
||||||
|
}
|
||||||
|
|
||||||
|
return new github.GitHub(authToken, options)
|
||||||
|
}
|
||||||
@@ -2,49 +2,93 @@
|
|||||||
import {from, Observable, merge, throwError, of} from 'rxjs'
|
import {from, Observable, merge, throwError, of} from 'rxjs'
|
||||||
import {catchError, map, tap} from 'rxjs/operators'
|
import {catchError, map, tap} from 'rxjs/operators'
|
||||||
import {graphql} from './graphql'
|
import {graphql} from './graphql'
|
||||||
|
import {Octokit} from '@octokit/rest'
|
||||||
|
|
||||||
let deleted = 0
|
let deleted = 0
|
||||||
|
|
||||||
export interface DeletePackageVersionMutationResponse {
|
// export interface DeletePackageVersionAPIResponse {
|
||||||
deletePackageVersion: {
|
// deletePackageVersion: {
|
||||||
success: boolean
|
// success: boolean
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
const mutation = `
|
// const mutation = `
|
||||||
mutation deletePackageVersion($packageVersionId: ID!) {
|
// mutation deletePackageVersion($packageVersionId: ID!) {
|
||||||
deletePackageVersion(input: {packageVersionId: $packageVersionId}) {
|
// deletePackageVersion(input: {packageVersionId: $packageVersionId}) {
|
||||||
success
|
// success
|
||||||
}
|
// }
|
||||||
}`
|
// }`
|
||||||
|
|
||||||
export function deletePackageVersion(
|
export function deletePackageVersion(
|
||||||
packageVersionId: string,
|
packageVersionId: string,
|
||||||
|
owner: string,
|
||||||
|
packageName: string,
|
||||||
|
packageType: string,
|
||||||
token: string
|
token: string
|
||||||
): Observable<boolean> {
|
): Observable<boolean> {
|
||||||
|
const octokit = new Octokit({
|
||||||
|
auth: token,
|
||||||
|
});
|
||||||
|
let package_version_id = +packageVersionId
|
||||||
|
// const response = octokit.rest.packages.deletePackageVersionForUser({
|
||||||
|
// packageType,
|
||||||
|
// packageName,
|
||||||
|
// owner,
|
||||||
|
// packageVersionId,
|
||||||
|
// });
|
||||||
|
// if (response.status != 200) {
|
||||||
|
// throw new Error(
|
||||||
|
// `Unexpected response from GitHub API. Status: ${response.status}, Data: ${response.data}`
|
||||||
|
// )
|
||||||
|
// }
|
||||||
deleted += 1
|
deleted += 1
|
||||||
|
|
||||||
|
// return from(
|
||||||
|
// graphql(token, mutation, {
|
||||||
|
// packageVersionId,
|
||||||
|
// headers: {
|
||||||
|
// Accept: 'application/vnd.github.package-deletes-preview+json'
|
||||||
|
// }
|
||||||
|
// }) as Promise<DeletePackageVersionMutationResponse>
|
||||||
|
// ).pipe(
|
||||||
|
// catchError(err => {
|
||||||
|
// const msg = 'delete version mutation failed.'
|
||||||
|
// return throwError(
|
||||||
|
// err.errors && err.errors.length > 0
|
||||||
|
// ? `${msg} ${err.errors[0].message}`
|
||||||
|
// : `${msg} ${err.message} \n${deleted - 1} versions deleted till now.`
|
||||||
|
// )
|
||||||
|
// }),
|
||||||
|
// map(response => response.deletePackageVersion.success)
|
||||||
|
// )
|
||||||
|
|
||||||
return from(
|
return from(
|
||||||
graphql(token, mutation, {
|
octokit.rest.packages.deletePackageVersionForUser({
|
||||||
packageVersionId,
|
package_type: "npm",
|
||||||
headers: {
|
package_name: packageName,
|
||||||
Accept: 'application/vnd.github.package-deletes-preview+json'
|
username: owner,
|
||||||
}
|
package_version_id: package_version_id,
|
||||||
}) as Promise<DeletePackageVersionMutationResponse>
|
})
|
||||||
).pipe(
|
).pipe(
|
||||||
catchError(err => {
|
catchError(err => {
|
||||||
const msg = 'delete version mutation failed.'
|
const msg = 'delete version API failed.'
|
||||||
return throwError(
|
return throwError(
|
||||||
err.errors && err.errors.length > 0
|
err.errors && err.errors.length > 0
|
||||||
? `${msg} ${err.errors[0].message}`
|
? `${msg} ${err.errors[0].message}`
|
||||||
: `${msg} ${err.message} \n${deleted - 1} versions deleted till now.`
|
: `${msg} ${err.message} \n${deleted - 1} versions deleted till now.`
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
map(response => response.deletePackageVersion.success)
|
map(response => response.status === 204)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deletePackageVersions(
|
export function deletePackageVersions(
|
||||||
packageVersionIds: string[],
|
packageVersionIds: string[],
|
||||||
|
owner: string,
|
||||||
|
packageName: string,
|
||||||
|
packageType: string,
|
||||||
token: string
|
token: string
|
||||||
): Observable<boolean> {
|
): Observable<boolean> {
|
||||||
if (packageVersionIds.length === 0) {
|
if (packageVersionIds.length === 0) {
|
||||||
@@ -52,7 +96,7 @@ export function deletePackageVersions(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const deletes = packageVersionIds.map(id =>
|
const deletes = packageVersionIds.map(id =>
|
||||||
deletePackageVersion(id, token).pipe(
|
deletePackageVersion(id, owner, packageName, packageType, token).pipe(
|
||||||
tap(result => {
|
tap(result => {
|
||||||
if (!result) {
|
if (!result) {
|
||||||
console.log(`version with id: ${id}, not deleted`)
|
console.log(`version with id: ${id}, not deleted`)
|
||||||
|
|||||||
Reference in New Issue
Block a user