mirror of
https://github.com/docker/actions-toolkit.git
synced 2024-11-23 03:16:09 +08:00
docker: set default standalone
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
fe07aec685
commit
fdc8b5d37b
@ -78,7 +78,9 @@ describe('hasLocalOrTarExporter', () => {
|
||||
describe('isAvailable', () => {
|
||||
it('docker cli', async () => {
|
||||
const execSpy = jest.spyOn(exec, 'getExecOutput');
|
||||
const buildx = new Buildx();
|
||||
const buildx = new Buildx({
|
||||
standalone: false
|
||||
});
|
||||
await buildx.isAvailable();
|
||||
// eslint-disable-next-line jest/no-standalone-expect
|
||||
expect(execSpy).toHaveBeenCalledWith(`docker`, ['buildx'], {
|
||||
|
@ -19,7 +19,7 @@ describe('isAvailable', () => {
|
||||
describe('info', () => {
|
||||
it('standard', () => {
|
||||
const execSpy = jest.spyOn(exec, 'exec');
|
||||
Docker.info();
|
||||
Docker.info(false);
|
||||
expect(execSpy).toHaveBeenCalledWith(`docker`, ['version'], {
|
||||
failOnStdErr: false
|
||||
});
|
||||
|
@ -18,22 +18,10 @@ export class Buildx {
|
||||
private tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-actions-toolkit-')).split(path.sep).join(path.posix.sep);
|
||||
|
||||
constructor(opts?: BuildxOpts) {
|
||||
this.standalone = opts?.standalone ?? this.isStandalone();
|
||||
this.standalone = opts?.standalone ?? !Docker.isAvailable();
|
||||
this.version = this.getVersion();
|
||||
}
|
||||
|
||||
private isStandalone(): boolean {
|
||||
let dockerAvailable = false;
|
||||
Docker.isAvailable()
|
||||
.then((res: boolean) => {
|
||||
dockerAvailable = res;
|
||||
})
|
||||
.catch(e => {
|
||||
dockerAvailable = false;
|
||||
});
|
||||
return dockerAvailable;
|
||||
}
|
||||
|
||||
public getCommand(args: Array<string>) {
|
||||
return {
|
||||
command: this.standalone ? 'buildx' : 'docker',
|
||||
|
@ -2,26 +2,30 @@ import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
|
||||
export class Docker {
|
||||
public static async isAvailable(): Promise<boolean> {
|
||||
return await exec
|
||||
public static isAvailable(): boolean {
|
||||
let dockerAvailable = false;
|
||||
exec
|
||||
.getExecOutput('docker', undefined, {
|
||||
ignoreReturnCode: true,
|
||||
silent: true
|
||||
})
|
||||
.then(res => {
|
||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
||||
return false;
|
||||
dockerAvailable = false;
|
||||
} else {
|
||||
dockerAvailable = res.exitCode == 0;
|
||||
}
|
||||
return res.exitCode == 0;
|
||||
})
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
.catch(error => {
|
||||
return false;
|
||||
dockerAvailable = false;
|
||||
});
|
||||
return dockerAvailable;
|
||||
}
|
||||
|
||||
public static async info(standalone?: boolean) {
|
||||
if (standalone) {
|
||||
const dockerAvailable = standalone ?? !Docker.isAvailable();
|
||||
if (dockerAvailable) {
|
||||
core.info(`Docker info skipped in standalone mode`);
|
||||
} else {
|
||||
await exec.exec('docker', ['version'], {
|
||||
|
Loading…
Reference in New Issue
Block a user