@@ -18,18 +18,17 @@ import fs from 'fs';
1818import os from 'os' ;
1919import path from 'path' ;
2020import * as core from '@actions/core' ;
21- import * as httpm from '@actions/http-client' ;
22- import { BearerCredentialHandler } from '@actions/http-client/lib/auth' ;
2321import * as tc from '@actions/tool-cache' ;
2422import * as semver from 'semver' ;
2523import * as util from 'util' ;
2624
2725import { Cache } from '../cache' ;
2826import { Context } from '../context' ;
27+ import { Docker } from '../docker/docker' ;
28+ import { GitHub } from '../github' ;
2929
3030import { DownloadVersion } from '../types/compose/compose' ;
3131import { GitHubRelease } from '../types/github' ;
32- import { Docker } from '../docker/docker' ;
3332
3433export interface InstallOpts {
3534 standalone ?: boolean ;
@@ -187,15 +186,19 @@ export class Install {
187186 key : repoKey ,
188187 version : version ,
189188 downloadURL : 'https://github.com/docker/compose/releases/download/v%s/%s' ,
190- releasesURL : 'https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-releases.json'
189+ releasesOwner : 'docker' ,
190+ releasesRepo : 'actions-toolkit' ,
191+ releasesPath : '.github/compose-releases.json'
191192 } ;
192193 }
193194 case 'cloud' : {
194195 return {
195196 key : repoKey ,
196197 version : version ,
197198 downloadURL : 'https://github.com/docker/compose-desktop/releases/download/v%s/%s' ,
198- releasesURL : 'https://raw.githubusercontent.com/docker/actions-toolkit/main/.github/compose-lab-releases.json'
199+ releasesOwner : 'docker' ,
200+ releasesRepo : 'actions-toolkit' ,
201+ releasesPath : '.github/compose-lab-releases.json'
199202 } ;
200203 }
201204 default : {
@@ -205,17 +208,22 @@ export class Install {
205208 }
206209
207210 public static async getRelease ( version : DownloadVersion , githubToken ?: string ) : Promise < GitHubRelease > {
208- githubToken = githubToken || process . env . GITHUB_TOKEN ;
209- const http : httpm . HttpClient = new httpm . HttpClient ( 'docker-actions-toolkit' , githubToken ? [ new BearerCredentialHandler ( githubToken ) ] : undefined ) ;
210- const resp : httpm . HttpClientResponse = await http . get ( version . releasesURL ) ;
211- const body = await resp . readBody ( ) ;
212- const statusCode = resp . message . statusCode || 500 ;
213- if ( statusCode >= 400 ) {
214- throw new Error ( `Failed to get Compose releases from ${ version . releasesURL } with status code ${ statusCode } : ${ body } ` ) ;
211+ let releasesJSON : string ;
212+ try {
213+ const github = new GitHub ( { token : githubToken } ) ;
214+ const resp = await github . octokit . rest . repos . getContent ( {
215+ owner : version . releasesOwner ,
216+ repo : version . releasesRepo ,
217+ path : version . releasesPath
218+ } ) ;
219+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
220+ releasesJSON = Buffer . from ( ( resp . data as any ) . content , ( resp . data as any ) . encoding ) . toString ( ) ;
221+ } catch ( error ) {
222+ throw new Error ( `Failed to get Compose releases: ${ error instanceof Error ? error . message : error } ` ) ;
215223 }
216- const releases = < Record < string , GitHubRelease > > JSON . parse ( body ) ;
224+ const releases = < Record < string , GitHubRelease > > JSON . parse ( releasesJSON ) ;
217225 if ( ! releases [ version . version ] ) {
218- throw new Error ( `Cannot find Compose release ${ version . version } in ${ version . releasesURL } ` ) ;
226+ throw new Error ( `Cannot find Compose release ${ version . version } in releases JSON ` ) ;
219227 }
220228 return releases [ version . version ] ;
221229 }
0 commit comments