diff --git a/__tests__/buildx/buildx.test.ts b/__tests__/buildx/buildx.test.ts index b56bd70..cdf98c4 100644 --- a/__tests__/buildx/buildx.test.ts +++ b/__tests__/buildx/buildx.test.ts @@ -88,6 +88,14 @@ describe('certsDir', () => { }); }); +describe('install', () => { + it('acquires buildx v0.9.1', async () => { + const buildx = new Buildx({context: new Context()}); + const buildxBin = await buildx.install('v0.9.1', tmpDir); + expect(fs.existsSync(buildxBin)).toBe(true); + }, 100000); +}); + describe('isAvailable', () => { it('docker cli', async () => { const execSpy = jest.spyOn(exec, 'getExecOutput'); diff --git a/src/buildx/buildx.ts b/src/buildx/buildx.ts index 2658733..6f8fb8e 100644 --- a/src/buildx/buildx.ts +++ b/src/buildx/buildx.ts @@ -34,16 +34,16 @@ export interface BuildxOpts { export class Buildx { private readonly context: Context; private _version: string | undefined; + private _install: Install; public readonly inputs: Inputs; - public readonly install: Install; public readonly standalone: boolean; constructor(opts: BuildxOpts) { this.context = opts.context; this.inputs = new Inputs(this.context); - this.install = new Install({standalone: opts.standalone}); this.standalone = opts?.standalone ?? !Docker.isAvailable; + this._install = new Install({standalone: opts.standalone}); } static get configDir(): string { @@ -61,6 +61,10 @@ export class Buildx { }; } + public async install(version: string, dest: string): Promise { + return await this._install.install(version, dest); + } + public async isAvailable(): Promise { const cmd = this.getCommand([]); return await exec