diff --git a/.github/workflows/checkPackageVersions.yml b/.github/workflows/checkPackageVersions.yml index 342cad2..56ae2da 100644 --- a/.github/workflows/checkPackageVersions.yml +++ b/.github/workflows/checkPackageVersions.yml @@ -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 { - 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'