mirror of
https://github.com/ManiMatter/decluttarr.git
synced 2026-04-26 18:55:45 +02:00
Update checkPackageVersions.yml
This commit is contained in:
99
.github/workflows/checkPackageVersions.yml
vendored
99
.github/workflows/checkPackageVersions.yml
vendored
@@ -1,83 +1,28 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
name: Check Package Versions
|
||||||
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'
|
|
||||||
|
|
||||||
export interface RestVersionInfo {
|
on:
|
||||||
id: number
|
workflow_dispatch:
|
||||||
version: string
|
|
||||||
created_at: string
|
|
||||||
tagged: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface RestQueryInfo {
|
jobs:
|
||||||
versions: RestVersionInfo[]
|
execute-script:
|
||||||
page: number
|
runs-on: ubuntu-latest
|
||||||
paginate: boolean
|
|
||||||
totalCount: number
|
|
||||||
}
|
|
||||||
|
|
||||||
type PackageType =
|
steps:
|
||||||
RestEndpointMethodTypes['packages']['getAllPackageVersionsForPackageOwnedByUser']['parameters']['package_type']
|
- name: Checkout code
|
||||||
type GetVersionsResponse =
|
uses: actions/checkout@v2
|
||||||
RestEndpointMethodTypes['packages']['getAllPackageVersionsForPackageOwnedByUser']['response']['data']
|
|
||||||
|
|
||||||
export function getOldestVersions(
|
- name: Setup Node.js
|
||||||
owner: string,
|
uses: actions/setup-node@v2
|
||||||
packageName: string,
|
with:
|
||||||
packageType: string,
|
node-version: '14'
|
||||||
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
|
|
||||||
|
|
||||||
return from(
|
- name: Install dependencies
|
||||||
octokit.rest.packages.getAllPackageVersionsForPackageOwnedByUser({
|
run: npm install @octokit/rest rxjs @octokit/plugin-rest-endpoint-methods typescript
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
- name: Compile TypeScript
|
||||||
id: version.id,
|
run: npx tsc .github/workflows/get-versions.ts
|
||||||
version: version.name,
|
|
||||||
created_at: version.created_at,
|
- name: Run script
|
||||||
tagged
|
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'
|
||||||
page,
|
|
||||||
paginate: response.data.length === numVersions,
|
|
||||||
totalCount: response.data.length
|
|
||||||
}
|
|
||||||
return resp
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user