Update checkPackageVersions.yml

This commit is contained in:
ManiMatter
2024-04-16 18:47:50 +02:00
committed by GitHub
parent 96751a275f
commit e01dd39e2b

View File

@@ -1,83 +1,28 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {from, Observable, merge, throwError, of} from 'rxjs'
import {catchError, map} from 'rxjs/operators'
import {Octokit} from '@octokit/rest'
import {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types'
name: Check Package Versions
export interface RestVersionInfo {
id: number
version: string
created_at: string
tagged: boolean
}
on:
workflow_dispatch:
export interface RestQueryInfo {
versions: RestVersionInfo[]
page: number
paginate: boolean
totalCount: number
}
jobs:
execute-script:
runs-on: ubuntu-latest
type PackageType =
RestEndpointMethodTypes['packages']['getAllPackageVersionsForPackageOwnedByUser']['parameters']['package_type']
type GetVersionsResponse =
RestEndpointMethodTypes['packages']['getAllPackageVersionsForPackageOwnedByUser']['response']['data']
steps:
- name: Checkout code
uses: actions/checkout@v2
export function getOldestVersions(
owner: string,
packageName: string,
packageType: string,
numVersions: number,
page: number,
token: string
): Observable<RestQueryInfo> {
const octokit = new Octokit({
auth: token,
baseUrl: process.env.GITHUB_API_URL || 'https://api.github.com'
})
const package_type: PackageType = packageType as PackageType
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
return from(
octokit.rest.packages.getAllPackageVersionsForPackageOwnedByUser({
package_type,
package_name: packageName,
username: owner,
per_page: numVersions,
page
})
).pipe(
catchError(err => {
const msg = 'get versions API failed.'
return throwError(
err.errors && err.errors.length > 0
? `${msg} ${err.errors[0].message}`
: `${msg} ${err.message}`
)
}),
map(response => {
const resp = {
versions: response.data.map((version: GetVersionsResponse[0]) => {
let tagged = false
if (
package_type === 'container' &&
version.metadata &&
version.metadata.container
) {
tagged = version.metadata.container.tags.length > 0
}
- name: Install dependencies
run: npm install @octokit/rest rxjs @octokit/plugin-rest-endpoint-methods typescript
return {
id: version.id,
version: version.name,
created_at: version.created_at,
tagged
}
}),
page,
paginate: response.data.length === numVersions,
totalCount: response.data.length
}
return resp
})
)
}
- name: Compile TypeScript
run: npx tsc .github/workflows/get-versions.ts
- name: Run script
run: node .github/workflows/get-versions.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.inputs.package-name }} ${{ github.event.inputs.package-type }}
env:
GITHUB_API_URL: 'https://api.github.com'