Compare commits

..

No commits in common. "master" and "v3.4.0" have entirely different histories.

16 changed files with 274 additions and 433 deletions

View File

@ -5,7 +5,6 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
on: on:
workflow_dispatch:
schedule: schedule:
- cron: '0 10 * * *' - cron: '0 10 * * *'
push: push:
@ -26,9 +25,8 @@ jobs:
- "" - ""
- "latest" - "latest"
- "v0.4.1" - "v0.4.1"
- "cloud:latest"
- "cloud:v0.11.2-desktop.2"
- "lab:latest" - "lab:latest"
- "lab:v0.11.2-desktop.2"
steps: steps:
- -
name: Checkout name: Checkout
@ -517,7 +515,7 @@ jobs:
cleanup: ${{ matrix.cleanup }} cleanup: ${{ matrix.cleanup }}
k3s: k3s:
runs-on: ubuntu-latest runs-on: ubuntu-20.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@ -530,7 +528,9 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
- -
name: Install k3s name: Install k3s
uses: crazy-max/.github/.github/actions/install-k3s@f5cb4a109b7a3b466a2ac293ef4bb13f1571acd7 uses: crazy-max/.github/.github/actions/install-k3s@605d30d5ae97f6680578ace4b56645af79343e60
with:
version: "v1.21.2-k3s1"
- -
name: Set up Docker Buildx name: Set up Docker Buildx
id: buildx id: buildx
@ -582,24 +582,3 @@ jobs:
with: with:
version: v0.11.2 version: v0.11.2
cache-binary: ${{ matrix.cache }} cache-binary: ${{ matrix.cache }}
windows-error:
runs-on: windows-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up Docker Buildx
id: buildx
continue-on-error: true
uses: ./
-
name: Check
run: |
echo "${{ toJson(steps.buildx) }}"
if [ "${{ steps.buildx.outcome }}" != "failure" ] || [ "${{ steps.buildx.conclusion }}" != "success" ]; then
echo "::error::Should have failed"
exit 1
fi
shell: bash

View File

@ -1,21 +0,0 @@
name: publish
on:
release:
types:
- published
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Publish
uses: actions/publish-immutable-action@v0.0.4

View File

@ -23,12 +23,12 @@ jobs:
uses: ./ uses: ./
- -
name: Test name: Test
uses: docker/bake-action@v6 uses: docker/bake-action@v5
with: with:
targets: test targets: test
- -
name: Upload coverage name: Upload coverage
uses: codecov/codecov-action@v5 uses: codecov/codecov-action@v4
with: with:
files: ./coverage/clover.xml file: ./coverage/clover.xml
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}

View File

@ -15,17 +15,16 @@ jobs:
prepare: prepare:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
targets: ${{ steps.generate.outputs.targets }} targets: ${{ steps.targets.outputs.matrix }}
steps: steps:
- -
name: Checkout name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- -
name: List targets name: Targets matrix
id: generate id: targets
uses: docker/bake-action/subaction/list-targets@v6 run: |
with: echo "matrix=$(docker buildx bake validate --print | jq -cr '.group.validate.targets')" >> $GITHUB_OUTPUT
target: validate
validate: validate:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -36,8 +35,11 @@ jobs:
matrix: matrix:
target: ${{ fromJson(needs.prepare.outputs.targets) }} target: ${{ fromJson(needs.prepare.outputs.targets) }}
steps: steps:
-
name: Checkout
uses: actions/checkout@v4
- -
name: Validate name: Validate
uses: docker/bake-action@v6 uses: docker/bake-action@v5
with: with:
targets: ${{ matrix.target }} targets: ${{ matrix.target }}

View File

@ -101,13 +101,7 @@ The following inputs can be used as `step.with` keys:
| `cache-binary` | Bool | `true` | Cache buildx binary to GitHub Actions cache backend | | `cache-binary` | Bool | `true` | Cache buildx binary to GitHub Actions cache backend |
| `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job | | `cleanup` | Bool | `true` | Cleanup temp files and remove builder at the end of a job |
> [!IMPORTANT] _\* `buildkitd-config` and `buildkitd-config-inline` are mutually exclusive_
> If you set the `buildkitd-flags` input, the default flags (`--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host`)
> will be reset. If you want to retain the default behavior, make sure to
> include these flags in your custom `buildkitd-flags` value.
> [!NOTE]
> `buildkitd-config` and `buildkitd-config-inline` are mutually exclusive.
### outputs ### outputs

View File

@ -1,6 +1,7 @@
import {beforeEach, describe, expect, jest, test} from '@jest/globals'; import {beforeEach, describe, expect, jest, test} from '@jest/globals';
import * as fs from 'fs'; import * as fs from 'fs';
import * as path from 'path'; import * as path from 'path';
import * as uuid from 'uuid';
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx'; import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx';
import {Context} from '@docker/actions-toolkit/lib/context'; import {Context} from '@docker/actions-toolkit/lib/context';
import {Docker} from '@docker/actions-toolkit/lib/docker/docker'; import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
@ -25,12 +26,8 @@ jest.spyOn(Context, 'tmpName').mockImplementation((): string => {
return tmpName; return tmpName;
}); });
jest.mock('crypto', () => { jest.mock('uuid');
return { jest.spyOn(uuid, 'v4').mockReturnValue('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d');
...(jest.requireActual('crypto') as object),
randomUUID: jest.fn(() => '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d')
};
});
jest.spyOn(Docker, 'context').mockImplementation((): Promise<string> => { jest.spyOn(Docker, 'context').mockImplementation((): Promise<string> => {
return Promise.resolve('default'); return Promise.resolve('default');
@ -229,24 +226,6 @@ describe('getCreateArgs', () => {
'--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host', '--buildkitd-flags', '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
'--config', tmpName, '--config', tmpName,
] ]
],
[
10,
'v0.10.3',
new Map<string, string>([
['install', 'false'],
['use', 'false'],
['driver', 'cloud'],
['buildkitd-flags', '--allow-insecure-entitlement network.host'],
['cache-binary', 'true'],
['cleanup', 'true'],
]),
[
'create',
'--name', 'builder-9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
'--driver', 'cloud',
'--buildkitd-flags', '--allow-insecure-entitlement network.host',
]
] ]
])( ])(
'[%d] given buildx %s and %p as inputs, returns %p', '[%d] given buildx %s and %p as inputs, returns %p',
@ -323,140 +302,6 @@ describe('getAppendArgs', () => {
); );
}); });
describe('getVersion', () => {
beforeEach(() => {
process.env = Object.keys(process.env).reduce((object, key) => {
if (!key.startsWith('INPUT_')) {
object[key] = process.env[key];
}
return object;
}, {});
});
// prettier-ignore
test.each([
[
0,
new Map<string, string>([
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true'],
]),
''
],
[
1,
new Map<string, string>([
['version', 'latest'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true']
]),
'latest'
],
[
2,
new Map<string, string>([
['version', 'edge'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true']
]),
'edge'
],
[
3,
new Map<string, string>([
['version', 'v0.19.2'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true']
]),
'v0.19.2'
],
[
4,
new Map<string, string>([
['version', 'latest'],
['driver', 'cloud'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true']
]),
'cloud:latest'
],
[
5,
new Map<string, string>([
['version', 'edge'],
['driver', 'cloud'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true']
]),
'cloud:edge'
],
[
6,
new Map<string, string>([
['driver', 'cloud'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true'],
]),
'cloud:latest'
],
[
7,
new Map<string, string>([
['version', 'cloud:v0.11.2-desktop.2'],
['driver', 'cloud'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true'],
]),
'cloud:v0.11.2-desktop.2'
],
[
8,
new Map<string, string>([
['version', 'cloud:v0.11.2-desktop.2'],
// defaults
['install', 'false'],
['use', 'true'],
['cache-binary', 'true'],
['cleanup', 'true'],
]),
'cloud:v0.11.2-desktop.2'
],
])(
'[%d] given %p as inputs, returns version %p',
async (num: number, inputs: Map<string, string>, expected: string) => {
inputs.forEach((value: string, name: string) => {
setInput(name, value);
});
const inp = await context.getInputs();
expect(context.getVersion(inp)).toEqual(expected);
}
);
});
// See: https://github.com/actions/toolkit/blob/master/packages/core/src/core.ts#L67 // See: https://github.com/actions/toolkit/blob/master/packages/core/src/core.ts#L67
function getInputName(name: string): string { function getInputName(name: string): string {
return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`; return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;

View File

@ -19,6 +19,7 @@ inputs:
required: false required: false
buildkitd-flags: buildkitd-flags:
description: 'BuildKit daemon flags' description: 'BuildKit daemon flags'
default: '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host'
required: false required: false
buildkitd-config: buildkitd-config:
description: 'BuildKit daemon config file' description: 'BuildKit daemon config file'
@ -51,7 +52,7 @@ inputs:
description: 'Cleanup temp files and remove builder at the end of a job' description: 'Cleanup temp files and remove builder at the end of a job'
default: 'true' default: 'true'
required: false required: false
# TODO: remove deprecated config and config-inline inputs # deprecated inputs
config: config:
description: 'BuildKit daemon config file' description: 'BuildKit daemon config file'
deprecationMessage: 'Use buildkitd-config instead' deprecationMessage: 'Use buildkitd-config instead'

28
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

6
dist/licenses.txt generated vendored
View File

@ -2358,6 +2358,9 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dot-object
MIT
encoding encoding
MIT MIT
Copyright (c) 2012-2014 Andris Reinman Copyright (c) 2012-2014 Andris Reinman
@ -3633,6 +3636,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
twirp-ts
MIT
undici undici
MIT MIT
MIT License MIT License

View File

@ -1,9 +1,3 @@
target "_common" {
args = {
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
}
}
group "default" { group "default" {
targets = ["build"] targets = ["build"]
} }
@ -17,49 +11,42 @@ group "validate" {
} }
target "build" { target "build" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-update" target = "build-update"
output = ["."] output = ["."]
} }
target "build-validate" { target "build-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "build-validate" target = "build-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "format" { target "format" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "format-update" target = "format-update"
output = ["."] output = ["."]
} }
target "lint" { target "lint" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "lint" target = "lint"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "vendor" { target "vendor" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-update" target = "vendor-update"
output = ["."] output = ["."]
} }
target "vendor-validate" { target "vendor-validate" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "vendor-validate" target = "vendor-validate"
output = ["type=cacheonly"] output = ["type=cacheonly"]
} }
target "test" { target "test" {
inherits = ["_common"]
dockerfile = "dev.Dockerfile" dockerfile = "dev.Dockerfile"
target = "test-coverage" target = "test-coverage"
output = ["./coverage"] output = ["./coverage"]

View File

@ -25,9 +25,10 @@
"license": "Apache-2.0", "license": "Apache-2.0",
"packageManager": "yarn@3.6.3", "packageManager": "yarn@3.6.3",
"dependencies": { "dependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.10.1",
"@docker/actions-toolkit": "^0.56.0", "@docker/actions-toolkit": "^0.31.0",
"js-yaml": "^4.1.0" "js-yaml": "^4.1.0",
"uuid": "^10.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/js-yaml": "^4.0.9", "@types/js-yaml": "^4.0.9",

View File

@ -1,4 +1,4 @@
import * as crypto from 'crypto'; import * as uuid from 'uuid';
import * as core from '@actions/core'; import * as core from '@actions/core';
import {Docker} from '@docker/actions-toolkit/lib/docker/docker'; import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
@ -8,7 +8,6 @@ import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {Node} from '@docker/actions-toolkit/lib/types/buildx/builder'; import {Node} from '@docker/actions-toolkit/lib/types/buildx/builder';
export const builderNodeEnvPrefix = 'BUILDER_NODE'; export const builderNodeEnvPrefix = 'BUILDER_NODE';
const defaultBuildkitdFlags = '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host';
export interface Inputs { export interface Inputs {
version: string; version: string;
@ -33,7 +32,7 @@ export async function getInputs(): Promise<Inputs> {
name: await getBuilderName(core.getInput('driver') || 'docker-container'), name: await getBuilderName(core.getInput('driver') || 'docker-container'),
driver: core.getInput('driver') || 'docker-container', driver: core.getInput('driver') || 'docker-container',
driverOpts: Util.getInputList('driver-opts', {ignoreComma: true, quote: false}), driverOpts: Util.getInputList('driver-opts', {ignoreComma: true, quote: false}),
buildkitdFlags: core.getInput('buildkitd-flags'), buildkitdFlags: core.getInput('buildkitd-flags') || '--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host',
platforms: Util.getInputList('platforms'), platforms: Util.getInputList('platforms'),
install: core.getBooleanInput('install'), install: core.getBooleanInput('install'),
use: core.getBooleanInput('use'), use: core.getBooleanInput('use'),
@ -47,19 +46,17 @@ export async function getInputs(): Promise<Inputs> {
} }
export async function getBuilderName(driver: string): Promise<string> { export async function getBuilderName(driver: string): Promise<string> {
return driver == 'docker' ? await Docker.context() : `builder-${crypto.randomUUID()}`; return driver == 'docker' ? await Docker.context() : `builder-${uuid.v4()}`;
} }
export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> { export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<Array<string>> {
const args: Array<string> = ['create', '--name', inputs.name, '--driver', inputs.driver]; const args: Array<string> = ['create', '--name', inputs.name, '--driver', inputs.driver];
if (await toolkit.buildx.versionSatisfies('>=0.3.0')) { if (await toolkit.buildx.versionSatisfies('>=0.3.0')) {
await Util.asyncForEach(inputs.driverOpts, async (driverOpt: string) => { await Util.asyncForEach(inputs.driverOpts, async driverOpt => {
args.push('--driver-opt', driverOpt); args.push('--driver-opt', driverOpt);
}); });
if (inputs.buildkitdFlags) { if (driverSupportsFlags(inputs.driver) && inputs.buildkitdFlags) {
args.push('--buildkitd-flags', inputs.buildkitdFlags); args.push('--buildkitd-flags', inputs.buildkitdFlags);
} else if (driverSupportsBuildkitdFlags(inputs.driver)) {
args.push('--buildkitd-flags', defaultBuildkitdFlags);
} }
} }
if (inputs.platforms.length > 0) { if (inputs.platforms.length > 0) {
@ -68,10 +65,12 @@ export async function getCreateArgs(inputs: Inputs, toolkit: Toolkit): Promise<A
if (inputs.use) { if (inputs.use) {
args.push('--use'); args.push('--use');
} }
if (inputs.buildkitdConfig) { if (driverSupportsFlags(inputs.driver)) {
args.push('--config', toolkit.buildkit.config.resolveFromFile(inputs.buildkitdConfig)); if (inputs.buildkitdConfig) {
} else if (inputs.buildkitdConfigInline) { args.push('--config', toolkit.buildkit.config.resolveFromFile(inputs.buildkitdConfig));
args.push('--config', toolkit.buildkit.config.resolveFromString(inputs.buildkitdConfigInline)); } else if (inputs.buildkitdConfigInline) {
args.push('--config', toolkit.buildkit.config.resolveFromString(inputs.buildkitdConfigInline));
}
} }
if (inputs.endpoint) { if (inputs.endpoint) {
args.push(inputs.endpoint); args.push(inputs.endpoint);
@ -84,16 +83,14 @@ export async function getAppendArgs(inputs: Inputs, node: Node, toolkit: Toolkit
if (node.name) { if (node.name) {
args.push('--node', node.name); args.push('--node', node.name);
} else if (inputs.driver == 'kubernetes' && (await toolkit.buildx.versionSatisfies('<0.11.0'))) { } else if (inputs.driver == 'kubernetes' && (await toolkit.buildx.versionSatisfies('<0.11.0'))) {
args.push('--node', `node-${crypto.randomUUID()}`); args.push('--node', `node-${uuid.v4()}`);
} }
if (node['driver-opts'] && (await toolkit.buildx.versionSatisfies('>=0.3.0'))) { if (node['driver-opts'] && (await toolkit.buildx.versionSatisfies('>=0.3.0'))) {
await Util.asyncForEach(node['driver-opts'], async (driverOpt: string) => { await Util.asyncForEach(node['driver-opts'], async driverOpt => {
args.push('--driver-opt', driverOpt); args.push('--driver-opt', driverOpt);
}); });
if (node['buildkitd-flags']) { if (driverSupportsFlags(inputs.driver) && node['buildkitd-flags']) {
args.push('--buildkitd-flags', node['buildkitd-flags']); args.push('--buildkitd-flags', node['buildkitd-flags']);
} else if (driverSupportsBuildkitdFlags(inputs.driver)) {
args.push('--buildkitd-flags', defaultBuildkitdFlags);
} }
} }
if (node.platforms) { if (node.platforms) {
@ -113,20 +110,6 @@ export async function getInspectArgs(inputs: Inputs, toolkit: Toolkit): Promise<
return args; return args;
} }
function driverSupportsBuildkitdFlags(driver: string): boolean { function driverSupportsFlags(driver: string): boolean {
return driver == '' || driver == 'docker-container' || driver == 'docker' || driver == 'kubernetes'; return driver == '' || driver == 'docker-container' || driver == 'docker' || driver == 'kubernetes';
} }
export function getVersion(inputs: Inputs): string {
const version = inputs.version;
if (inputs.driver === 'cloud') {
if (!version || version === 'latest') {
return 'cloud:latest';
}
if (version.startsWith('cloud:') || version.startsWith('lab:')) {
return version;
}
return `cloud:${version}`;
}
return version;
}

View File

@ -1,4 +1,3 @@
import * as crypto from 'crypto';
import * as fs from 'fs'; import * as fs from 'fs';
import * as yaml from 'js-yaml'; import * as yaml from 'js-yaml';
import * as core from '@actions/core'; import * as core from '@actions/core';
@ -12,7 +11,6 @@ import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
import {Util} from '@docker/actions-toolkit/lib/util'; import {Util} from '@docker/actions-toolkit/lib/util';
import {Node} from '@docker/actions-toolkit/lib/types/buildx/builder'; import {Node} from '@docker/actions-toolkit/lib/types/buildx/builder';
import {ContextInfo} from '@docker/actions-toolkit/lib/types/docker/docker';
import * as context from './context'; import * as context from './context';
import * as stateHelper from './state-helper'; import * as stateHelper from './state-helper';
@ -22,7 +20,6 @@ actionsToolkit.run(
async () => { async () => {
const inputs: context.Inputs = await context.getInputs(); const inputs: context.Inputs = await context.getInputs();
stateHelper.setCleanup(inputs.cleanup); stateHelper.setCleanup(inputs.cleanup);
const version = context.getVersion(inputs);
const toolkit = new Toolkit(); const toolkit = new Toolkit();
const standalone = await toolkit.buildx.isStandalone(); const standalone = await toolkit.buildx.isStandalone();
@ -38,16 +35,16 @@ actionsToolkit.run(
}); });
let toolPath; let toolPath;
if (Util.isValidRef(version)) { if (Util.isValidRef(inputs.version)) {
if (standalone) { if (standalone) {
throw new Error(`Cannot build from source without the Docker CLI`); throw new Error(`Cannot build from source without the Docker CLI`);
} }
await core.group(`Build buildx from source`, async () => { await core.group(`Build buildx from source`, async () => {
toolPath = await toolkit.buildxInstall.build(version, !inputs.cacheBinary); toolPath = await toolkit.buildxInstall.build(inputs.version, !inputs.cacheBinary);
}); });
} else if (!(await toolkit.buildx.isAvailable()) || version) { } else if (!(await toolkit.buildx.isAvailable()) || inputs.version) {
await core.group(`Download buildx from GitHub Releases`, async () => { await core.group(`Download buildx from GitHub Releases`, async () => {
toolPath = await toolkit.buildxInstall.download(version || 'latest', !inputs.cacheBinary); toolPath = await toolkit.buildxInstall.download(inputs.version || 'latest', !inputs.cacheBinary);
}); });
} }
if (toolPath) { if (toolPath) {
@ -71,51 +68,6 @@ actionsToolkit.run(
fs.mkdirSync(Buildx.certsDir, {recursive: true}); fs.mkdirSync(Buildx.certsDir, {recursive: true});
stateHelper.setCertsDir(Buildx.certsDir); stateHelper.setCertsDir(Buildx.certsDir);
// if the default context has TLS data loaded and endpoint is not set, then
// we create a temporary docker context only if driver is docker-container
// https://github.com/docker/buildx/blob/b96ad59f64d40873e4959336d294b648bb3937fe/builder/builder.go#L489
// https://github.com/docker/setup-buildx-action/issues/105
if (!standalone && inputs.driver == 'docker-container' && (await Docker.context()) == 'default' && inputs.endpoint.length == 0) {
let defaultContextWithTLS: boolean = false;
await core.group(`Inspecting default docker context`, async () => {
await Docker.getExecOutput(['context', 'inspect', '--format=json', 'default'], {
ignoreReturnCode: true,
silent: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.info(`Cannot inspect default docker context: ${res.stderr.trim()}`);
} else {
try {
const contextInfo = (<Array<ContextInfo>>JSON.parse(res.stdout.trim()))[0];
core.info(JSON.stringify(JSON.parse(res.stdout.trim()), undefined, 2));
const hasTLSData = Object.keys(contextInfo.Endpoints).length > 0 && Object.values(contextInfo.Endpoints)[0].TLSData !== undefined;
const hasTLSMaterial = Object.keys(contextInfo.TLSMaterial).length > 0 && Object.values(contextInfo.TLSMaterial)[0].length > 0;
defaultContextWithTLS = hasTLSData || hasTLSMaterial;
} catch (e) {
core.info(`Unable to parse default docker context info: ${e}`);
core.info(res.stdout.trim());
}
}
});
});
if (defaultContextWithTLS) {
const tmpDockerContext = `buildx-${crypto.randomUUID()}`;
await core.group(`Creating temp docker context (TLS data loaded in default one)`, async () => {
await Docker.getExecOutput(['context', 'create', tmpDockerContext], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.warning(`Cannot create docker context ${tmpDockerContext}: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
} else {
core.info(`Setting builder endpoint to ${tmpDockerContext} context`);
inputs.endpoint = tmpDockerContext;
stateHelper.setTmpDockerContext(tmpDockerContext);
}
});
});
}
}
if (inputs.driver !== 'docker') { if (inputs.driver !== 'docker') {
await core.group(`Creating a new builder instance`, async () => { await core.group(`Creating a new builder instance`, async () => {
const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, { const certsDriverOpts = Buildx.resolveCertsDriverOpts(inputs.driver, inputs.endpoint, {
@ -229,7 +181,7 @@ actionsToolkit.run(
async () => { async () => {
if (stateHelper.IsDebug && stateHelper.containerName.length > 0) { if (stateHelper.IsDebug && stateHelper.containerName.length > 0) {
await core.group(`BuildKit container logs`, async () => { await core.group(`BuildKit container logs`, async () => {
await Docker.getExecOutput(['logs', `${stateHelper.containerName}`], { await Exec.getExecOutput('docker', ['logs', `${stateHelper.containerName}`], {
ignoreReturnCode: true ignoreReturnCode: true
}).then(res => { }).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) { if (res.stderr.length > 0 && res.exitCode != 0) {
@ -262,18 +214,6 @@ actionsToolkit.run(
}); });
} }
if (stateHelper.tmpDockerContext) {
await core.group(`Removing temp docker context`, async () => {
await Exec.getExecOutput('docker', ['context', 'rm', '-f', stateHelper.tmpDockerContext], {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
core.warning(`${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
}
});
});
}
if (stateHelper.certsDir.length > 0 && fs.existsSync(stateHelper.certsDir)) { if (stateHelper.certsDir.length > 0 && fs.existsSync(stateHelper.certsDir)) {
await core.group(`Cleaning up certificates`, async () => { await core.group(`Cleaning up certificates`, async () => {
fs.rmSync(stateHelper.certsDir, {recursive: true}); fs.rmSync(stateHelper.certsDir, {recursive: true});

View File

@ -6,7 +6,6 @@ export const builderName = process.env['STATE_builderName'] || '';
export const builderDriver = process.env['STATE_builderDriver'] || ''; export const builderDriver = process.env['STATE_builderDriver'] || '';
export const containerName = process.env['STATE_containerName'] || ''; export const containerName = process.env['STATE_containerName'] || '';
export const certsDir = process.env['STATE_certsDir'] || ''; export const certsDir = process.env['STATE_certsDir'] || '';
export const tmpDockerContext = process.env['STATE_tmpDockerContext'] || '';
export const cleanup = /true/i.test(process.env['STATE_cleanup'] || ''); export const cleanup = /true/i.test(process.env['STATE_cleanup'] || '');
export function setDebug(debug: string) { export function setDebug(debug: string) {
@ -33,10 +32,6 @@ export function setCertsDir(certsDir: string) {
core.saveState('certsDir', certsDir); core.saveState('certsDir', certsDir);
} }
export function setTmpDockerContext(tmpDockerContext: string) {
core.saveState('tmpDockerContext', tmpDockerContext);
}
export function setCleanup(cleanup: boolean) { export function setCleanup(cleanup: boolean) {
core.saveState('cleanup', cleanup); core.saveState('cleanup', cleanup);
} }

283
yarn.lock
View File

@ -12,9 +12,9 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/artifact@npm:^2.2.2": "@actions/artifact@npm:^2.1.7":
version: 2.2.2 version: 2.1.7
resolution: "@actions/artifact@npm:2.2.2" resolution: "@actions/artifact@npm:2.1.7"
dependencies: dependencies:
"@actions/core": ^1.10.0 "@actions/core": ^1.10.0
"@actions/github": ^5.1.1 "@actions/github": ^5.1.1
@ -26,17 +26,19 @@ __metadata:
"@octokit/request-error": ^5.0.0 "@octokit/request-error": ^5.0.0
"@protobuf-ts/plugin": ^2.2.3-alpha.1 "@protobuf-ts/plugin": ^2.2.3-alpha.1
archiver: ^7.0.1 archiver: ^7.0.1
crypto: ^1.0.1
jwt-decode: ^3.1.2 jwt-decode: ^3.1.2
twirp-ts: ^2.5.0
unzip-stream: ^0.3.1 unzip-stream: ^0.3.1
checksum: 1501b3d0ceb671f370786ccf70014de9586c5a78c95d235248fc16c73bf928f8de2aa932a679258f6d9bc2f2e570648d830551af9f063298f05d19f3330b33bc checksum: 346c7caf43bdeb4a96c044ca3a6a005d82b977178b1a6be2c6954dfd59fef3344d2576bdd07c6cac9b54207cc88d7b1161cabd08c7cc15a1db86bf82463b36c7
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/cache@npm:^4.0.2": "@actions/cache@npm:^3.2.4":
version: 4.0.2 version: 3.2.4
resolution: "@actions/cache@npm:4.0.2" resolution: "@actions/cache@npm:3.2.4"
dependencies: dependencies:
"@actions/core": ^1.11.1 "@actions/core": ^1.10.0
"@actions/exec": ^1.0.1 "@actions/exec": ^1.0.1
"@actions/glob": ^0.1.0 "@actions/glob": ^0.1.0
"@actions/http-client": ^2.1.1 "@actions/http-client": ^2.1.1
@ -44,13 +46,13 @@ __metadata:
"@azure/abort-controller": ^1.1.0 "@azure/abort-controller": ^1.1.0
"@azure/ms-rest-js": ^2.6.0 "@azure/ms-rest-js": ^2.6.0
"@azure/storage-blob": ^12.13.0 "@azure/storage-blob": ^12.13.0
"@protobuf-ts/plugin": ^2.9.4
semver: ^6.3.1 semver: ^6.3.1
checksum: 208f11238a26194f331b329bb99d50a87c1a3ccef1dbae181e5c142b3faf41715203e0c5cbc491519d3d97540a68fbd418c25fb6e16caabf76248c40867c02b4 uuid: ^3.3.3
checksum: 5bf5f7541bea4906b553440a9ffee5699e11dfb729365c6cb0bbd37e147a1a0993369fdad16bfa3e2b01ec7fa57dac66276278bfd4a389009246a75ea953e61d
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/core@npm:^1.10.0, @actions/core@npm:^1.2.6": "@actions/core@npm:^1.10.0, @actions/core@npm:^1.10.1, @actions/core@npm:^1.2.6":
version: 1.10.1 version: 1.10.1
resolution: "@actions/core@npm:1.10.1" resolution: "@actions/core@npm:1.10.1"
dependencies: dependencies:
@ -60,16 +62,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/core@npm:^1.11.1":
version: 1.11.1
resolution: "@actions/core@npm:1.11.1"
dependencies:
"@actions/exec": ^1.1.1
"@actions/http-client": ^2.0.1
checksum: 9ac7a3e0b478bfefd862dcb4ddaa1d8c3f9076bb1931d3d280918d1749e7783480c6a009c1b009c8bf5093e2d77d9f4e023d70416145bf246f0071736d4ef839
languageName: node
linkType: hard
"@actions/exec@npm:^1.0.0, @actions/exec@npm:^1.0.1, @actions/exec@npm:^1.1.1": "@actions/exec@npm:^1.0.0, @actions/exec@npm:^1.0.1, @actions/exec@npm:^1.1.1":
version: 1.1.1 version: 1.1.1
resolution: "@actions/exec@npm:1.1.1" resolution: "@actions/exec@npm:1.1.1"
@ -113,7 +105,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/http-client@npm:^2.0.1, @actions/http-client@npm:^2.1.0, @actions/http-client@npm:^2.1.1, @actions/http-client@npm:^2.2.0": "@actions/http-client@npm:^2.0.1, @actions/http-client@npm:^2.1.0, @actions/http-client@npm:^2.1.1, @actions/http-client@npm:^2.2.0, @actions/http-client@npm:^2.2.1":
version: 2.2.1 version: 2.2.1
resolution: "@actions/http-client@npm:2.2.1" resolution: "@actions/http-client@npm:2.2.1"
dependencies: dependencies:
@ -123,16 +115,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/http-client@npm:^2.2.3":
version: 2.2.3
resolution: "@actions/http-client@npm:2.2.3"
dependencies:
tunnel: ^0.0.6
undici: ^5.25.4
checksum: 5d395df575d30ae599efa10dd715e72944b015e753db61f0a823f737acbb0e99743d4a9f25e812b18ec8cc34f86c73565d075c449e01ffa891577b6595212dde
languageName: node
linkType: hard
"@actions/io@npm:^1.0.1, @actions/io@npm:^1.1.1, @actions/io@npm:^1.1.3": "@actions/io@npm:^1.0.1, @actions/io@npm:^1.1.1, @actions/io@npm:^1.1.3":
version: 1.1.3 version: 1.1.3
resolution: "@actions/io@npm:1.1.3" resolution: "@actions/io@npm:1.1.3"
@ -140,16 +122,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@actions/tool-cache@npm:^2.0.2": "@actions/tool-cache@npm:^2.0.1":
version: 2.0.2 version: 2.0.1
resolution: "@actions/tool-cache@npm:2.0.2" resolution: "@actions/tool-cache@npm:2.0.1"
dependencies: dependencies:
"@actions/core": ^1.11.1 "@actions/core": ^1.2.6
"@actions/exec": ^1.0.0 "@actions/exec": ^1.0.0
"@actions/http-client": ^2.0.1 "@actions/http-client": ^2.0.1
"@actions/io": ^1.1.1 "@actions/io": ^1.1.1
semver: ^6.1.0 semver: ^6.1.0
checksum: c2bab4297be752bdda9dd61f8159a201ad0d37d026134b960f1edcc9418a80387f44d1f24a070fe992c44dcfc28a152f70600e76669bb0578132789a6f37a596 uuid: ^3.3.2
checksum: 33f6393b9b163e4af2b9759e8d37cda4f018f10ddda3643355bb8a9f92d732e5bdff089cf8036b46d181e1ef2b3210b895b2f746fdf54487afe88f1d340aa9e1
languageName: node languageName: node
linkType: hard linkType: hard
@ -1088,32 +1071,32 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@docker/actions-toolkit@npm:^0.56.0": "@docker/actions-toolkit@npm:^0.31.0":
version: 0.56.0 version: 0.31.0
resolution: "@docker/actions-toolkit@npm:0.56.0" resolution: "@docker/actions-toolkit@npm:0.31.0"
dependencies: dependencies:
"@actions/artifact": ^2.2.2 "@actions/artifact": ^2.1.7
"@actions/cache": ^4.0.2 "@actions/cache": ^3.2.4
"@actions/core": ^1.11.1 "@actions/core": ^1.10.1
"@actions/exec": ^1.1.1 "@actions/exec": ^1.1.1
"@actions/github": ^6.0.0 "@actions/github": ^6.0.0
"@actions/http-client": ^2.2.3 "@actions/http-client": ^2.2.1
"@actions/io": ^1.1.3 "@actions/io": ^1.1.3
"@actions/tool-cache": ^2.0.2 "@actions/tool-cache": ^2.0.1
"@azure/storage-blob": ^12.15.0 "@azure/storage-blob": ^12.15.0
"@octokit/core": ^5.1.0 "@octokit/core": ^5.1.0
"@octokit/plugin-rest-endpoint-methods": ^10.4.0 "@octokit/plugin-rest-endpoint-methods": ^10.4.0
async-retry: ^1.3.3 async-retry: ^1.3.3
csv-parse: ^5.6.0 csv-parse: ^5.5.6
gunzip-maybe: ^1.4.2 gunzip-maybe: ^1.4.2
handlebars: ^4.7.8 handlebars: ^4.7.8
he: ^1.2.0 he: ^1.2.0
js-yaml: ^4.1.0 js-yaml: ^4.1.0
jwt-decode: ^4.0.0 jwt-decode: ^4.0.0
semver: ^7.7.1 semver: ^7.6.2
tar-stream: ^3.1.7 tar-stream: ^3.1.7
tmp: ^0.2.3 tmp: ^0.2.3
checksum: 0f1b569f8bb206399f8c26e566c78e30e4a311bbd64486016e7fa1d35fbbb4c94d4f55afa6b711afa4b41c5835b40b038f48c3d1bfdfdc6f7c6680973e922d9e checksum: 34fdc08b6380bbee05fc740b161bb1172658da6d3e58f0f9cf8bc12011da638b37314e2a92a689542955189459ace241769c9f247a6917bf8365bc461221eecd
languageName: node languageName: node
linkType: hard linkType: hard
@ -1906,7 +1889,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@protobuf-ts/plugin-framework@npm:^2.9.4": "@protobuf-ts/plugin-framework@npm:^2.0.7, @protobuf-ts/plugin-framework@npm:^2.9.4":
version: 2.9.4 version: 2.9.4
resolution: "@protobuf-ts/plugin-framework@npm:2.9.4" resolution: "@protobuf-ts/plugin-framework@npm:2.9.4"
dependencies: dependencies:
@ -1916,7 +1899,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@protobuf-ts/plugin@npm:^2.2.3-alpha.1, @protobuf-ts/plugin@npm:^2.9.4": "@protobuf-ts/plugin@npm:^2.2.3-alpha.1":
version: 2.9.4 version: 2.9.4
resolution: "@protobuf-ts/plugin@npm:2.9.4" resolution: "@protobuf-ts/plugin@npm:2.9.4"
dependencies: dependencies:
@ -2799,6 +2782,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"camel-case@npm:^4.1.2":
version: 4.1.2
resolution: "camel-case@npm:4.1.2"
dependencies:
pascal-case: ^3.1.2
tslib: ^2.0.3
checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6
languageName: node
linkType: hard
"camelcase@npm:^5.3.1": "camelcase@npm:^5.3.1":
version: 5.3.1 version: 5.3.1
resolution: "camelcase@npm:5.3.1" resolution: "camelcase@npm:5.3.1"
@ -2958,6 +2951,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"commander@npm:^6.1.0":
version: 6.2.1
resolution: "commander@npm:6.2.1"
checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742
languageName: node
linkType: hard
"compress-commons@npm:^6.0.2": "compress-commons@npm:^6.0.2":
version: 6.0.2 version: 6.0.2
resolution: "compress-commons@npm:6.0.2" resolution: "compress-commons@npm:6.0.2"
@ -3045,20 +3045,27 @@ __metadata:
linkType: hard linkType: hard
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
version: 7.0.6 version: 7.0.3
resolution: "cross-spawn@npm:7.0.6" resolution: "cross-spawn@npm:7.0.3"
dependencies: dependencies:
path-key: ^3.1.0 path-key: ^3.1.0
shebang-command: ^2.0.0 shebang-command: ^2.0.0
which: ^2.0.1 which: ^2.0.1
checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52
languageName: node languageName: node
linkType: hard linkType: hard
"csv-parse@npm:^5.6.0": "crypto@npm:^1.0.1":
version: 5.6.0 version: 1.0.1
resolution: "csv-parse@npm:5.6.0" resolution: "crypto@npm:1.0.1"
checksum: 173e176bdaf212bab37d0f6d39a06d039d24a1c0ee40b9f1023ebf8b36095934807deeb493c0fb58592b39b0682ccd0be5c9e8d2b137c08807e7031595ea7a51 checksum: 087fe3165bd94c333a49e6ed66a0193911f63eac38a24f379b3001a5fe260a59c413646e53a0f67875ba13902b2686d81dc703cb2c147a4ec727dcdc04e5645e
languageName: node
linkType: hard
"csv-parse@npm:^5.5.6":
version: 5.5.6
resolution: "csv-parse@npm:5.5.6"
checksum: ee06f97f674487dc1d001b360de8ea510a41b9d971abf43bcf9c3be22c83a3634df0d3ebfbe52fd49d145077066be7ff9f25de3fc6b71aefb973099b04147a25
languageName: node languageName: node
linkType: hard linkType: hard
@ -3160,8 +3167,8 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "docker-setup-buildx@workspace:." resolution: "docker-setup-buildx@workspace:."
dependencies: dependencies:
"@actions/core": ^1.11.1 "@actions/core": ^1.10.1
"@docker/actions-toolkit": ^0.56.0 "@docker/actions-toolkit": ^0.31.0
"@types/js-yaml": ^4.0.9 "@types/js-yaml": ^4.0.9
"@types/node": ^20.12.12 "@types/node": ^20.12.12
"@types/uuid": ^10.0.0 "@types/uuid": ^10.0.0
@ -3178,6 +3185,7 @@ __metadata:
ts-jest: ^29.1.2 ts-jest: ^29.1.2
ts-node: ^10.9.2 ts-node: ^10.9.2
typescript: ^5.4.5 typescript: ^5.4.5
uuid: ^10.0.0
languageName: unknown languageName: unknown
linkType: soft linkType: soft
@ -3190,6 +3198,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"dot-object@npm:^2.1.4":
version: 2.1.5
resolution: "dot-object@npm:2.1.5"
dependencies:
commander: ^6.1.0
glob: ^7.1.6
bin:
dot-object: bin/dot-object
checksum: 3e5a681bbea32dfc1cd0b1254adc93531bd462f7474a355e981738ef37253e4bc5c9482926289ef4d3c6ef9adb0a7ed894725ed3a69aa22063343dc2a57dd764
languageName: node
linkType: hard
"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": "duplexify@npm:^3.5.0, duplexify@npm:^3.6.0":
version: 3.7.1 version: 3.7.1
resolution: "duplexify@npm:3.7.1" resolution: "duplexify@npm:3.7.1"
@ -3857,6 +3877,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"glob@npm:^7.1.6":
version: 7.2.3
resolution: "glob@npm:7.2.3"
dependencies:
fs.realpath: ^1.0.0
inflight: ^1.0.4
inherits: 2
minimatch: ^3.1.1
once: ^1.3.0
path-is-absolute: ^1.0.0
checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133
languageName: node
linkType: hard
"globals@npm:^11.1.0": "globals@npm:^11.1.0":
version: 11.12.0 version: 11.12.0
resolution: "globals@npm:11.12.0" resolution: "globals@npm:11.12.0"
@ -4945,6 +4979,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"lower-case@npm:^2.0.2":
version: 2.0.2
resolution: "lower-case@npm:2.0.2"
dependencies:
tslib: ^2.0.3
checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010
languageName: node
linkType: hard
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.2.2 version: 10.2.2
resolution: "lru-cache@npm:10.2.2" resolution: "lru-cache@npm:10.2.2"
@ -5062,7 +5105,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.2": "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2 version: 3.1.2
resolution: "minimatch@npm:3.1.2" resolution: "minimatch@npm:3.1.2"
dependencies: dependencies:
@ -5228,6 +5271,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"no-case@npm:^3.0.4":
version: 3.0.4
resolution: "no-case@npm:3.0.4"
dependencies:
lower-case: ^2.0.2
tslib: ^2.0.3
checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c
languageName: node
linkType: hard
"node-fetch@npm:^2.6.7": "node-fetch@npm:^2.6.7":
version: 2.6.9 version: 2.6.9
resolution: "node-fetch@npm:2.6.9" resolution: "node-fetch@npm:2.6.9"
@ -5422,6 +5475,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pascal-case@npm:^3.1.2":
version: 3.1.2
resolution: "pascal-case@npm:3.1.2"
dependencies:
no-case: ^3.0.4
tslib: ^2.0.3
checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e
languageName: node
linkType: hard
"path-exists@npm:^4.0.0": "path-exists@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "path-exists@npm:4.0.0" resolution: "path-exists@npm:4.0.0"
@ -5470,6 +5533,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"path-to-regexp@npm:^6.2.0":
version: 6.2.2
resolution: "path-to-regexp@npm:6.2.2"
checksum: b7b0005c36f5099f9ed1fb20a820d2e4ed1297ffe683ea1d678f5e976eb9544f01debb281369dabdc26da82e6453901bf71acf2c7ed14b9243536c2a45286c33
languageName: node
linkType: hard
"path-type@npm:^4.0.0": "path-type@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "path-type@npm:4.0.0" resolution: "path-type@npm:4.0.0"
@ -5534,6 +5604,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prettier@npm:^2.5.1":
version: 2.8.8
resolution: "prettier@npm:2.8.8"
bin:
prettier: bin-prettier.js
checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8
languageName: node
linkType: hard
"prettier@npm:^3.2.5": "prettier@npm:^3.2.5":
version: 3.2.5 version: 3.2.5
resolution: "prettier@npm:3.2.5" resolution: "prettier@npm:3.2.5"
@ -5861,7 +5940,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:^7.6.0": "semver@npm:^7.6.0, semver@npm:^7.6.2":
version: 7.6.2 version: 7.6.2
resolution: "semver@npm:7.6.2" resolution: "semver@npm:7.6.2"
bin: bin:
@ -5870,15 +5949,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:^7.7.1":
version: 7.7.1
resolution: "semver@npm:7.7.1"
bin:
semver: bin/semver.js
checksum: 586b825d36874007c9382d9e1ad8f93888d8670040add24a28e06a910aeebd673a2eb9e3bf169c6679d9245e66efb9057e0852e70d9daa6c27372aab1dda7104
languageName: node
linkType: hard
"shebang-command@npm:^2.0.0": "shebang-command@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "shebang-command@npm:2.0.0" resolution: "shebang-command@npm:2.0.0"
@ -6369,6 +6439,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ts-poet@npm:^4.5.0":
version: 4.15.0
resolution: "ts-poet@npm:4.15.0"
dependencies:
lodash: ^4.17.15
prettier: ^2.5.1
checksum: 93490e8b5921e23ac65afdecc00b4dd53f3560d7d9c19778a3f0bd9a300ba7ca71585a989d564508313bc73e8c431413714d513ebca2d5c428f909ec36bcf6e9
languageName: node
linkType: hard
"tslib@npm:^1.10.0": "tslib@npm:^1.10.0":
version: 1.14.1 version: 1.14.1
resolution: "tslib@npm:1.14.1" resolution: "tslib@npm:1.14.1"
@ -6376,6 +6456,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tslib@npm:^2.0.3, tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad
languageName: node
linkType: hard
"tslib@npm:^2.2.0": "tslib@npm:^2.2.0":
version: 2.6.0 version: 2.6.0
resolution: "tslib@npm:2.6.0" resolution: "tslib@npm:2.6.0"
@ -6383,13 +6470,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad
languageName: node
linkType: hard
"tunnel@npm:0.0.6, tunnel@npm:^0.0.6": "tunnel@npm:0.0.6, tunnel@npm:^0.0.6":
version: 0.0.6 version: 0.0.6
resolution: "tunnel@npm:0.0.6" resolution: "tunnel@npm:0.0.6"
@ -6397,6 +6477,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"twirp-ts@npm:^2.5.0":
version: 2.5.0
resolution: "twirp-ts@npm:2.5.0"
dependencies:
"@protobuf-ts/plugin-framework": ^2.0.7
camel-case: ^4.1.2
dot-object: ^2.1.4
path-to-regexp: ^6.2.0
ts-poet: ^4.5.0
yaml: ^1.10.2
peerDependencies:
"@protobuf-ts/plugin": ^2.5.0
ts-proto: ^1.81.3
peerDependenciesMeta:
"@protobuf-ts/plugin":
optional: true
ts-proto:
optional: true
bin:
protoc-gen-twirp_ts: protoc-gen-twirp_ts
checksum: e7cf87d77ab4d2cd327c9d8307e82ff61afc5af56883aed5fb6ac7d57999b646945e11158be87c10f0340aeef2efde6eb896f2efd60599498f17b4f310d66e4f
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0 version: 0.4.0
resolution: "type-check@npm:0.4.0" resolution: "type-check@npm:0.4.0"
@ -6557,6 +6661,24 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"uuid@npm:^10.0.0":
version: 10.0.0
resolution: "uuid@npm:10.0.0"
bin:
uuid: dist/bin/uuid
checksum: 4b81611ade2885d2313ddd8dc865d93d8dccc13ddf901745edca8f86d99bc46d7a330d678e7532e7ebf93ce616679fb19b2e3568873ac0c14c999032acb25869
languageName: node
linkType: hard
"uuid@npm:^3.3.2, uuid@npm:^3.3.3":
version: 3.4.0
resolution: "uuid@npm:3.4.0"
bin:
uuid: ./bin/uuid
checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f
languageName: node
linkType: hard
"uuid@npm:^8.3.0, uuid@npm:^8.3.2": "uuid@npm:^8.3.0, uuid@npm:^8.3.2":
version: 8.3.2 version: 8.3.2
resolution: "uuid@npm:8.3.2" resolution: "uuid@npm:8.3.2"
@ -6723,6 +6845,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"yaml@npm:^1.10.2":
version: 1.10.2
resolution: "yaml@npm:1.10.2"
checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f
languageName: node
linkType: hard
"yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": "yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1":
version: 21.1.1 version: 21.1.1
resolution: "yargs-parser@npm:21.1.1" resolution: "yargs-parser@npm:21.1.1"