From f3bf577877721565cf02a1a9aa72db2a2fba7f83 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Sat, 18 Jan 2025 11:17:02 +0100 Subject: [PATCH] builder: support files in inspect command Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- __tests__/.fixtures/inspect11.txt | 12 ++++++++++++ __tests__/buildx/builder.test.ts | 14 +++++++++++++- src/buildx/builder.ts | 16 ++++++++++++++++ src/types/buildx/builder.ts | 1 + 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/__tests__/.fixtures/inspect11.txt b/__tests__/.fixtures/inspect11.txt index f70f6fae..5e35713b 100644 --- a/__tests__/.fixtures/inspect11.txt +++ b/__tests__/.fixtures/inspect11.txt @@ -37,3 +37,15 @@ GC Policy rule#2: GC Policy rule#3: All: true Keep Bytes: 94.06GiB +File#buildkitd.toml: + > debug = true + > insecure-entitlements = ["network.host", "security.insecure"] + > trace = true + > + > [log] + > format = "text" + > +File#foo.txt: + > foo = bar + > baz = qux + > diff --git a/__tests__/buildx/builder.test.ts b/__tests__/buildx/builder.test.ts index f19ef9fb..011a33ff 100644 --- a/__tests__/buildx/builder.test.ts +++ b/__tests__/buildx/builder.test.ts @@ -449,7 +449,19 @@ describe('parseInspect', () => { "all": true, "keepBytes": "94.06GiB", } - ] + ], + "files": { + "buildkitd.toml": `debug = true +insecure-entitlements = ["network.host", "security.insecure"] +trace = true + +[log] + format = "text" +`, + "foo.txt": `foo = bar +baz = qux +`, + } } ] } diff --git a/src/buildx/builder.ts b/src/buildx/builder.ts index a44181fd..578d6979 100644 --- a/src/buildx/builder.ts +++ b/src/buildx/builder.ts @@ -89,6 +89,7 @@ export class Builder { let parsingType: string | undefined; let currentNode: NodeInfo = {}; let currentGCPolicy: GCPolicy | undefined; + let currentFile: string | undefined; for (const line of data.trim().split(`\n`)) { const [key, ...rest] = line.split(':'); const lkey = key.toLowerCase(); @@ -178,6 +179,12 @@ export class Builder { currentGCPolicy = undefined; } break; + case lkey.startsWith('file#'): + parsingType = 'file'; + currentFile = key.split('#')[1]; + currentNode.files = currentNode.files || {}; + currentNode.files[currentFile] = ''; + break; default: { switch (parsingType || '') { case 'features': { @@ -215,6 +222,15 @@ export class Builder { } break; } + case 'file': { + if (currentFile && currentNode.files) { + if (currentNode.files[currentFile].length > 0) { + currentNode.files[currentFile] += '\n'; + } + currentNode.files[currentFile] += line.replace(/^\s>\s?/, ''); + } + break; + } } } } diff --git a/src/types/buildx/builder.ts b/src/types/buildx/builder.ts index 52bf77e6..b319d408 100644 --- a/src/types/buildx/builder.ts +++ b/src/types/buildx/builder.ts @@ -35,6 +35,7 @@ export interface NodeInfo extends Node { features?: Record; labels?: Record; gcPolicy?: Array; + files?: Record; } export interface GCPolicy {