Skip to content

Commit

Permalink
Merge pull request #64 from crazy-max/builder-exists
Browse files Browse the repository at this point in the history
builder: exists method
  • Loading branch information
crazy-max committed Mar 3, 2023
2 parents 2090433 + 32af66c commit dd1544e
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 1 deletion.
14 changes: 14 additions & 0 deletions __tests__/buildx/builder.test.ts
Expand Up @@ -19,6 +19,7 @@ import * as fs from 'fs';
import * as path from 'path';

import {Builder} from '../../src/buildx/builder';
import {Exec} from '../../src/exec';

import {BuilderInfo} from '../../src/types/builder';

Expand Down Expand Up @@ -47,6 +48,19 @@ jest.spyOn(Builder.prototype, 'inspect').mockImplementation(async (): Promise<Bu
};
});

describe('exists', () => {
it('valid', async () => {
const execSpy = jest.spyOn(Exec, 'getExecOutput');
const builder = new Builder();
await builder.exists('foo');
// eslint-disable-next-line jest/no-standalone-expect
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx', 'inspect', 'foo'], {
silent: true,
ignoreReturnCode: true
});
});
});

describe('inspect', () => {
it('valid', async () => {
const builder = new Builder();
Expand Down
25 changes: 25 additions & 0 deletions src/buildx/builder.ts
Expand Up @@ -14,6 +14,8 @@
* limitations under the License.
*/

import * as core from '@actions/core';

import {Buildx} from './buildx';
import {Exec} from '../exec';

Expand All @@ -30,6 +32,29 @@ export class Builder {
this.buildx = opts?.buildx || new Buildx();
}

public async exists(name: string): Promise<boolean> {
const cmd = await this.buildx.getCommand(['inspect', name]);

const ok: boolean = await Exec.getExecOutput(cmd.command, cmd.args, {
ignoreReturnCode: true,
silent: true
})
.then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.debug(`Builder.exists cmd err: ${res.stderr.trim()}`);
return false;
}
return res.exitCode == 0;
})
.catch(error => {
core.debug(`Builder.exists error: ${error}`);
return false;
});

core.debug(`Builder.exists: ${ok}`);
return ok;
}

public async inspect(name: string): Promise<BuilderInfo> {
const cmd = await this.buildx.getCommand(['inspect', name]);
return await Exec.getExecOutput(cmd.command, cmd.args, {
Expand Down
2 changes: 1 addition & 1 deletion src/buildx/buildx.ts
Expand Up @@ -76,7 +76,7 @@ export class Buildx {
})
.then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.debug(`Buildx.isAvailable cmd err: ${res.stderr}`);
core.debug(`Buildx.isAvailable cmd err: ${res.stderr.trim()}`);
return false;
}
return res.exitCode == 0;
Expand Down

0 comments on commit dd1544e

Please sign in to comment.