bake: support remote definition when parsing

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax
2023-03-25 16:03:52 +01:00
parent 7fb0476dc8
commit 314f8f431e
7 changed files with 201 additions and 62 deletions

View File

@@ -17,6 +17,7 @@
import {Buildx} from './buildx';
import {Exec} from '../exec';
import {Inputs} from './inputs';
import {Util} from '../util';
import {BakeDefinition} from '../types/bake';
@@ -31,13 +32,29 @@ export class Bake {
this.buildx = opts?.buildx || new Buildx();
}
public async parseDefinitions(files: Array<string>, targets: Array<string>): Promise<BakeDefinition> {
public async parseDefinitions(sources: Array<string>, targets: Array<string>): Promise<BakeDefinition> {
const args = ['bake'];
if (files) {
for (const file of files) {
args.push('--file', file);
let remoteDef;
const files: Array<string> = [];
if (sources) {
for (const source of sources) {
if (!Util.isValidRef(source)) {
files.push(source);
continue;
}
if (remoteDef) {
throw new Error(`Only one remote bake definition is allowed`);
}
remoteDef = source;
}
}
if (remoteDef) {
args.push(remoteDef);
}
for (const file of files) {
args.push('--file', file);
}
const printCmd = await this.buildx.getCommand([...args, '--print', ...targets]);
return await Exec.getExecOutput(printCmd.command, printCmd.args, {