bake: refactor generateBakeFile

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2023-12-20 14:48:27 +01:00
parent 74fa878183
commit 36ea4ee555
No known key found for this signature in database
GPG Key ID: ADE44D8C9D44FBE4

View File

@ -522,15 +522,19 @@ export class Meta {
public getBakeFile(kind: string): string { public getBakeFile(kind: string): string {
if (kind == 'tags') { if (kind == 'tags') {
return this.generateBakeFile(kind, { return this.generateBakeFile(
{
tags: this.getTags(), tags: this.getTags(),
args: { args: {
DOCKER_META_IMAGES: this.getImageNames().join(','), DOCKER_META_IMAGES: this.getImageNames().join(','),
DOCKER_META_VERSION: this.version.main DOCKER_META_VERSION: this.version.main
} }
}); },
kind
);
} else if (kind == 'labels') { } else if (kind == 'labels') {
return this.generateBakeFile(kind, { return this.generateBakeFile(
{
labels: this.getLabels().reduce((res, label) => { labels: this.getLabels().reduce((res, label) => {
const matches = label.match(/([^=]*)=(.*)/); const matches = label.match(/([^=]*)=(.*)/);
if (!matches) { if (!matches) {
@ -539,28 +543,27 @@ export class Meta {
res[matches[1]] = matches[2]; res[matches[1]] = matches[2];
return res; return res;
}, {}) }, {})
}); },
kind
);
} else if (kind.startsWith('annotations:')) { } else if (kind.startsWith('annotations:')) {
const name = kind.split(':')[0]; const name = kind.split(':')[0];
const annotations: Array<string> = []; const annotations: Array<string> = [];
for (const level of kind.split(':')[1].split(',')) { for (const level of kind.split(':')[1].split(',')) {
annotations.push(...this.getAnnotations().map(label => `${level}:${label}`)); annotations.push(...this.getAnnotations().map(label => `${level}:${label}`));
} }
return this.generateBakeFile(name, { return this.generateBakeFile(
{
annotations: annotations annotations: annotations
}); },
name
);
} }
throw new Error(`Unknown bake file type: ${kind}`); throw new Error(`Unknown bake file type: ${kind}`);
} }
public getBakeFileTagsLabels(): string { public getBakeFileTagsLabels(): string {
const bakeFile = path.join(ToolkitContext.tmpDir(), 'docker-metadata-action-bake.json'); return this.generateBakeFile({
fs.writeFileSync(
bakeFile,
JSON.stringify(
{
target: {
[this.inputs.bakeTarget]: {
tags: this.getTags(), tags: this.getTags(),
labels: this.getLabels().reduce((res, label) => { labels: this.getLabels().reduce((res, label) => {
const matches = label.match(/([^=]*)=(.*)/); const matches = label.match(/([^=]*)=(.*)/);
@ -574,18 +577,11 @@ export class Meta {
DOCKER_META_IMAGES: this.getImageNames().join(','), DOCKER_META_IMAGES: this.getImageNames().join(','),
DOCKER_META_VERSION: this.version.main DOCKER_META_VERSION: this.version.main
} }
} });
}
},
null,
2
)
);
return bakeFile;
} }
private generateBakeFile(name: string, dt): string { private generateBakeFile(dt, suffix?: string): string {
const bakeFile = path.join(ToolkitContext.tmpDir(), `docker-metadata-action-bake-${name}.json`); const bakeFile = path.join(ToolkitContext.tmpDir(), `docker-metadata-action-bake${suffix ? `-${suffix}` : ''}.json`);
fs.writeFileSync(bakeFile, JSON.stringify({target: {[this.inputs.bakeTarget]: dt}}, null, 2)); fs.writeFileSync(bakeFile, JSON.stringify({target: {[this.inputs.bakeTarget]: dt}}, null, 2));
return bakeFile; return bakeFile;
} }