@docker/actions-toolkit 0.1.0-beta.9 → 0.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +3 -1
  2. package/lib/buildkit/buildkit.d.ts +4 -7
  3. package/lib/buildkit/buildkit.js +20 -38
  4. package/lib/buildkit/buildkit.js.map +1 -1
  5. package/lib/buildkit/config.d.ts +0 -3
  6. package/lib/buildkit/config.js +2 -4
  7. package/lib/buildkit/config.js.map +1 -1
  8. package/lib/buildx/bake.d.ts +29 -0
  9. package/lib/buildx/bake.js +93 -0
  10. package/lib/buildx/bake.js.map +1 -0
  11. package/lib/buildx/builder.d.ts +2 -4
  12. package/lib/buildx/builder.js +30 -14
  13. package/lib/buildx/builder.js.map +1 -1
  14. package/lib/buildx/buildx.d.ts +7 -10
  15. package/lib/buildx/buildx.js +47 -36
  16. package/lib/buildx/buildx.js.map +1 -1
  17. package/lib/buildx/inputs.d.ts +10 -13
  18. package/lib/buildx/inputs.js +24 -27
  19. package/lib/buildx/inputs.js.map +1 -1
  20. package/lib/buildx/install.d.ts +6 -8
  21. package/lib/buildx/install.js +63 -56
  22. package/lib/buildx/install.js.map +1 -1
  23. package/lib/context.d.ts +6 -7
  24. package/lib/context.js +18 -13
  25. package/lib/context.js.map +1 -1
  26. package/lib/docker/assets.d.ts +23 -0
  27. package/lib/docker/assets.js +339 -0
  28. package/lib/docker/assets.js.map +1 -0
  29. package/lib/{docker.d.ts → docker/docker.d.ts} +4 -3
  30. package/lib/{docker.js → docker/docker.js} +33 -39
  31. package/lib/docker/docker.js.map +1 -0
  32. package/lib/docker/install.d.ts +46 -0
  33. package/lib/docker/install.js +393 -0
  34. package/lib/docker/install.js.map +1 -0
  35. package/lib/exec.d.ts +20 -0
  36. package/lib/exec.js +68 -0
  37. package/lib/exec.js.map +1 -0
  38. package/lib/git.d.ts +10 -1
  39. package/lib/git.js +76 -34
  40. package/lib/git.js.map +1 -1
  41. package/lib/github.js +3 -5
  42. package/lib/github.js.map +1 -1
  43. package/lib/index.d.ts +24 -0
  44. package/lib/index.js +80 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/toolkit.d.ts +0 -2
  47. package/lib/toolkit.js +4 -6
  48. package/lib/toolkit.js.map +1 -1
  49. package/lib/types/bake.d.ts +42 -0
  50. package/lib/types/bake.js +18 -0
  51. package/lib/types/bake.js.map +1 -0
  52. package/lib/types/builder.d.ts +4 -9
  53. package/lib/types/git.d.ts +17 -0
  54. package/lib/types/git.js +18 -0
  55. package/lib/types/git.js.map +1 -0
  56. package/lib/util.d.ts +7 -1
  57. package/lib/util.js +45 -3
  58. package/lib/util.js.map +1 -1
  59. package/package.json +22 -16
  60. package/lib/docker.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  [![Version](https://img.shields.io/npm/v/@docker/actions-toolkit?label=version&logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
2
2
  [![Downloads](https://img.shields.io/npm/dw/@docker/actions-toolkit?logo=npm&style=flat-square)](https://www.npmjs.com/package/@docker/actions-toolkit)
3
+ [![Build workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/build.yml?label=build&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=build)
3
4
  [![Test workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/test.yml?label=test&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=test)
5
+ [![Validate workflow](https://img.shields.io/github/actions/workflow/status/docker/actions-toolkit/validate.yml?label=validate&logo=github&style=flat-square)](https://github.com/docker/actions-toolkit/actions?workflow=validate)
4
6
  [![Codecov](https://img.shields.io/codecov/c/github/docker/actions-toolkit?logo=codecov&style=flat-square)](https://codecov.io/gh/docker/actions-toolkit)
5
7
 
6
8
  # Actions Toolkit
@@ -39,7 +41,7 @@ $ npm install @docker/actions-toolkit
39
41
  ## Usage
40
42
 
41
43
  ```js
42
- const { Toolkit } = require('@docker/actions-toolkit')
44
+ const { Toolkit } = require('@docker/actions-toolkit/lib/toolkit')
43
45
  const toolkit = new Toolkit()
44
46
  ```
45
47
 
@@ -13,20 +13,17 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Context } from '../context';
17
16
  import { Buildx } from '../buildx/buildx';
18
17
  import { Config } from './config';
18
+ import { BuilderInfo, NodeInfo } from '../types/builder';
19
19
  export interface BuildKitOpts {
20
- context: Context;
21
20
  buildx?: Buildx;
22
21
  }
23
22
  export declare class BuildKit {
24
- private readonly context;
25
23
  private readonly buildx;
26
24
  readonly config: Config;
27
- constructor(opts: BuildKitOpts);
28
- getVersion(builderName: string): Promise<string | undefined>;
25
+ constructor(opts?: BuildKitOpts);
26
+ getVersion(node: NodeInfo): Promise<string | undefined>;
29
27
  private getVersionWithinImage;
30
- versionSatisfies(builderName: string, range: string): Promise<boolean>;
31
- private getBuilderInfo;
28
+ versionSatisfies(builderName: string, range: string, builderInfo?: BuilderInfo): Promise<boolean>;
32
29
  }
@@ -49,31 +49,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.BuildKit = void 0;
51
51
  const core = __importStar(require("@actions/core"));
52
- const exec = __importStar(require("@actions/exec"));
53
52
  const semver = __importStar(require("semver"));
54
53
  const buildx_1 = require("../buildx/buildx");
55
54
  const builder_1 = require("../buildx/builder");
56
55
  const config_1 = require("./config");
56
+ const exec_1 = require("../exec");
57
57
  class BuildKit {
58
58
  constructor(opts) {
59
- this.context = opts.context;
60
- this.config = new config_1.Config(this.context);
61
- this.buildx =
62
- (opts === null || opts === void 0 ? void 0 : opts.buildx) ||
63
- new buildx_1.Buildx({
64
- context: this.context
65
- });
59
+ this.config = new config_1.Config();
60
+ this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
66
61
  }
67
- getVersion(builderName) {
62
+ getVersion(node) {
68
63
  return __awaiter(this, void 0, void 0, function* () {
69
- const builderInfo = yield this.getBuilderInfo(builderName);
70
- if (builderInfo.nodes.length == 0) {
71
- // a builder always have on node, should not happen.
72
- return undefined;
73
- }
74
- // TODO: get version for all nodes
75
- const node = builderInfo.nodes[0];
76
- if (!node.buildkitVersion && node.name) {
64
+ if (!node.buildkit && node.name) {
77
65
  try {
78
66
  return yield this.getVersionWithinImage(node.name);
79
67
  }
@@ -81,24 +69,22 @@ class BuildKit {
81
69
  core.warning(e);
82
70
  }
83
71
  }
84
- return node.buildkitVersion;
72
+ return node.buildkit;
85
73
  });
86
74
  }
87
75
  getVersionWithinImage(nodeName) {
88
76
  return __awaiter(this, void 0, void 0, function* () {
89
- return exec
90
- .getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${buildx_1.Buildx.containerNamePrefix}${nodeName}`], {
77
+ core.debug(`BuildKit.getVersionWithinImage nodeName: ${nodeName}`);
78
+ return exec_1.Exec.getExecOutput(`docker`, ['inspect', '--format', '{{.Config.Image}}', `${buildx_1.Buildx.containerNamePrefix}${nodeName}`], {
91
79
  ignoreReturnCode: true,
92
80
  silent: true
93
- })
94
- .then(bkitimage => {
81
+ }).then(bkitimage => {
95
82
  if (bkitimage.exitCode == 0 && bkitimage.stdout.length > 0) {
96
- return exec
97
- .getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
83
+ core.debug(`BuildKit.getVersionWithinImage image: ${bkitimage.stdout.trim()}`);
84
+ return exec_1.Exec.getExecOutput(`docker`, ['run', '--rm', bkitimage.stdout.trim(), '--version'], {
98
85
  ignoreReturnCode: true,
99
86
  silent: true
100
- })
101
- .then(bkitversion => {
87
+ }).then(bkitversion => {
102
88
  if (bkitversion.exitCode == 0 && bkitversion.stdout.length > 0) {
103
89
  return `${bkitimage.stdout.trim()} => ${bkitversion.stdout.trim()}`;
104
90
  }
@@ -115,19 +101,24 @@ class BuildKit {
115
101
  });
116
102
  });
117
103
  }
118
- versionSatisfies(builderName, range) {
104
+ versionSatisfies(builderName, range, builderInfo) {
119
105
  return __awaiter(this, void 0, void 0, function* () {
120
- const builderInfo = yield this.getBuilderInfo(builderName);
106
+ if (!builderInfo) {
107
+ builderInfo = yield new builder_1.Builder({ buildx: this.buildx }).inspect(builderName);
108
+ }
121
109
  for (const node of builderInfo.nodes) {
122
- let bkversion = node.buildkitVersion;
110
+ let bkversion = node.buildkit;
111
+ core.debug(`BuildKit.versionSatisfies ${bkversion}: ${range}`);
123
112
  if (!bkversion) {
124
113
  try {
125
114
  bkversion = yield this.getVersionWithinImage(node.name || '');
126
115
  }
127
116
  catch (e) {
117
+ core.debug(`BuildKit.versionSatisfies ${node.name}: can't get version`);
128
118
  return false;
129
119
  }
130
120
  }
121
+ core.debug(`BuildKit.versionSatisfies ${node.name}: version ${bkversion}`);
131
122
  // BuildKit version reported by moby is in the format of `v0.11.0-moby`
132
123
  if (builderInfo.driver == 'docker' && !bkversion.endsWith('-moby')) {
133
124
  return false;
@@ -139,15 +130,6 @@ class BuildKit {
139
130
  return true;
140
131
  });
141
132
  }
142
- getBuilderInfo(name) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- const builder = new builder_1.Builder({
145
- context: this.context,
146
- buildx: this.buildx
147
- });
148
- return builder.inspect(name);
149
- });
150
- }
151
133
  }
152
134
  exports.BuildKit = BuildKit;
153
135
  //# sourceMappingURL=buildkit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildkit.js","sourceRoot":"","sources":["../../src/buildkit/buildkit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildkit.js","sourceRoot":"","sources":["../../src/buildkit/buildkit.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Context } from '../context';
17
16
  export declare class Config {
18
- private readonly context;
19
- constructor(context: Context);
20
17
  resolveFromString(s: string): string;
21
18
  resolveFromFile(s: string): string;
22
19
  private resolve;
@@ -20,10 +20,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.Config = void 0;
22
22
  const fs_1 = __importDefault(require("fs"));
23
+ const context_1 = require("../context");
23
24
  class Config {
24
- constructor(context) {
25
- this.context = context;
26
- }
27
25
  resolveFromString(s) {
28
26
  return this.resolve(s, false);
29
27
  }
@@ -37,7 +35,7 @@ class Config {
37
35
  }
38
36
  s = fs_1.default.readFileSync(s, { encoding: 'utf-8' });
39
37
  }
40
- const configFile = this.context.tmpName({ tmpdir: this.context.tmpDir() });
38
+ const configFile = context_1.Context.tmpName({ tmpdir: context_1.Context.tmpDir() });
41
39
  fs_1.default.writeFileSync(configFile, s);
42
40
  return configFile;
43
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/buildkit/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,4CAAoB;AAIpB,MAAa,MAAM;IAGjB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,iBAAiB,CAAC,CAAS;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe,CAAC,CAAS;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,CAAS,EAAE,IAAa;QACtC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aAC/C;YACD,CAAC,GAAG,YAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;SAC7C;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;QACzE,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AA1BD,wBA0BC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/buildkit/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;AAEH,4CAAoB;AAEpB,wCAAmC;AAEnC,MAAa,MAAM;IACV,iBAAiB,CAAC,CAAS;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe,CAAC,CAAS;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,CAAS,EAAE,IAAa;QACtC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aAC/C;YACD,CAAC,GAAG,YAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;SAC7C;QACD,MAAM,UAAU,GAAG,iBAAO,CAAC,OAAO,CAAC,EAAC,MAAM,EAAE,iBAAO,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;QAC/D,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AApBD,wBAoBC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright 2023 actions-toolkit authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Buildx } from './buildx';
17
+ import { BakeDefinition } from '../types/bake';
18
+ export interface BakeOpts {
19
+ buildx?: Buildx;
20
+ }
21
+ export declare class Bake {
22
+ private readonly buildx;
23
+ constructor(opts?: BakeOpts);
24
+ parseDefinitions(sources: Array<string>, targets: Array<string>, workdir?: string): Promise<BakeDefinition>;
25
+ static hasLocalExporter(def: BakeDefinition): boolean;
26
+ static hasTarExporter(def: BakeDefinition): boolean;
27
+ static hasDockerExporter(def: BakeDefinition, load?: boolean): boolean;
28
+ private static exporters;
29
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2023 actions-toolkit authors
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.Bake = void 0;
28
+ const buildx_1 = require("./buildx");
29
+ const exec_1 = require("../exec");
30
+ const inputs_1 = require("./inputs");
31
+ const util_1 = require("../util");
32
+ class Bake {
33
+ constructor(opts) {
34
+ this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
35
+ }
36
+ parseDefinitions(sources, targets, workdir) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const args = ['bake'];
39
+ let remoteDef;
40
+ const files = [];
41
+ if (sources) {
42
+ for (const source of sources) {
43
+ if (!util_1.Util.isValidRef(source)) {
44
+ files.push(source);
45
+ continue;
46
+ }
47
+ if (remoteDef) {
48
+ throw new Error(`Only one remote bake definition is allowed`);
49
+ }
50
+ remoteDef = source;
51
+ }
52
+ }
53
+ if (remoteDef) {
54
+ args.push(remoteDef);
55
+ }
56
+ for (const file of files) {
57
+ args.push('--file', file);
58
+ }
59
+ const printCmd = yield this.buildx.getCommand([...args, '--print', ...targets]);
60
+ return yield exec_1.Exec.getExecOutput(printCmd.command, printCmd.args, {
61
+ cwd: workdir,
62
+ ignoreReturnCode: true,
63
+ silent: true
64
+ }).then(res => {
65
+ if (res.stderr.length > 0 && res.exitCode != 0) {
66
+ throw new Error(res.stderr);
67
+ }
68
+ return JSON.parse(res.stdout.trim());
69
+ });
70
+ });
71
+ }
72
+ static hasLocalExporter(def) {
73
+ return inputs_1.Inputs.hasExporterType('local', Bake.exporters(def));
74
+ }
75
+ static hasTarExporter(def) {
76
+ return inputs_1.Inputs.hasExporterType('tar', Bake.exporters(def));
77
+ }
78
+ static hasDockerExporter(def, load) {
79
+ return load || inputs_1.Inputs.hasExporterType('docker', Bake.exporters(def));
80
+ }
81
+ static exporters(def) {
82
+ const exporters = new Array();
83
+ for (const key in def.target) {
84
+ const target = def.target[key];
85
+ if (target.output) {
86
+ exporters.push(...target.output);
87
+ }
88
+ }
89
+ return exporters;
90
+ }
91
+ }
92
+ exports.Bake = Bake;
93
+ //# sourceMappingURL=bake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bake.js","sourceRoot":"","sources":["../../src/buildx/bake.ts"],"names":[],"mappings":"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"}
@@ -14,16 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { Buildx } from './buildx';
17
- import { Context } from '../context';
18
17
  import { BuilderInfo } from '../types/builder';
19
18
  export interface BuilderOpts {
20
- context: Context;
21
19
  buildx?: Buildx;
22
20
  }
23
21
  export declare class Builder {
24
- private readonly context;
25
22
  private readonly buildx;
26
- constructor(opts: BuilderOpts);
23
+ constructor(opts?: BuilderOpts);
24
+ exists(name: string): Promise<boolean>;
27
25
  inspect(name: string): Promise<BuilderInfo>;
28
26
  static parseInspect(data: string): BuilderInfo;
29
27
  }
@@ -48,26 +48,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.Builder = void 0;
51
- const exec = __importStar(require("@actions/exec"));
51
+ const core = __importStar(require("@actions/core"));
52
52
  const buildx_1 = require("./buildx");
53
+ const exec_1 = require("../exec");
53
54
  class Builder {
54
55
  constructor(opts) {
55
- this.context = opts.context;
56
- this.buildx =
57
- (opts === null || opts === void 0 ? void 0 : opts.buildx) ||
58
- new buildx_1.Buildx({
59
- context: this.context
60
- });
56
+ this.buildx = (opts === null || opts === void 0 ? void 0 : opts.buildx) || new buildx_1.Buildx();
61
57
  }
62
- inspect(name) {
58
+ exists(name) {
63
59
  return __awaiter(this, void 0, void 0, function* () {
64
- const cmd = this.buildx.getCommand(['inspect', name]);
65
- return yield exec
66
- .getExecOutput(cmd.command, cmd.args, {
60
+ const cmd = yield this.buildx.getCommand(['inspect', name]);
61
+ const ok = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
67
62
  ignoreReturnCode: true,
68
63
  silent: true
69
64
  })
70
65
  .then(res => {
66
+ if (res.stderr.length > 0 && res.exitCode != 0) {
67
+ core.debug(`Builder.exists cmd err: ${res.stderr.trim()}`);
68
+ return false;
69
+ }
70
+ return res.exitCode == 0;
71
+ })
72
+ .catch(error => {
73
+ core.debug(`Builder.exists error: ${error}`);
74
+ return false;
75
+ });
76
+ core.debug(`Builder.exists: ${ok}`);
77
+ return ok;
78
+ });
79
+ }
80
+ inspect(name) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const cmd = yield this.buildx.getCommand(['inspect', name]);
83
+ return yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
84
+ ignoreReturnCode: true,
85
+ silent: true
86
+ }).then(res => {
71
87
  if (res.stderr.length > 0 && res.exitCode != 0) {
72
88
  throw new Error(res.stderr.trim());
73
89
  }
@@ -113,7 +129,7 @@ class Builder {
113
129
  break;
114
130
  }
115
131
  case 'driver options': {
116
- node.driverOpts = (value.match(/(\w+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
132
+ node['driver-opts'] = (value.match(/([a-zA-Z0-9_.]+)="([^"]*)"/g) || []).map(v => v.replace(/^(.*)="(.*)"$/g, '$1=$2'));
117
133
  break;
118
134
  }
119
135
  case 'status': {
@@ -121,11 +137,11 @@ class Builder {
121
137
  break;
122
138
  }
123
139
  case 'flags': {
124
- node.buildkitdFlags = value;
140
+ node['buildkitd-flags'] = value;
125
141
  break;
126
142
  }
127
143
  case 'buildkit': {
128
- node.buildkitVersion = value;
144
+ node.buildkit = value;
129
145
  break;
130
146
  }
131
147
  case 'platforms': {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/buildx/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/buildx/builder.ts"],"names":[],"mappings":"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"}
@@ -13,29 +13,26 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Context } from '../context';
17
- import { Inputs } from './inputs';
18
16
  import { Cert } from '../types/buildx';
19
17
  export interface BuildxOpts {
20
- context: Context;
21
18
  standalone?: boolean;
22
19
  }
23
20
  export declare class Buildx {
24
- private readonly context;
25
21
  private _version;
26
- readonly inputs: Inputs;
27
- readonly standalone: boolean;
22
+ private _versionOnce;
23
+ private readonly _standalone;
28
24
  static readonly containerNamePrefix = "buildx_buildkit_";
29
- constructor(opts: BuildxOpts);
25
+ constructor(opts?: BuildxOpts);
30
26
  static get configDir(): string;
31
27
  static get certsDir(): string;
32
- getCommand(args: Array<string>): {
28
+ isStandalone(): Promise<boolean>;
29
+ getCommand(args: Array<string>): Promise<{
33
30
  command: string;
34
31
  args: string[];
35
- };
32
+ }>;
36
33
  isAvailable(): Promise<boolean>;
37
34
  printInspect(name: string): Promise<void>;
38
- get version(): Promise<string | undefined>;
35
+ version(): Promise<string>;
39
36
  printVersion(): Promise<void>;
40
37
  static parseVersion(stdout: string): string;
41
38
  versionSatisfies(range: string, version?: string): Promise<boolean>;
@@ -54,16 +54,14 @@ exports.Buildx = void 0;
54
54
  const fs_1 = __importDefault(require("fs"));
55
55
  const path_1 = __importDefault(require("path"));
56
56
  const core = __importStar(require("@actions/core"));
57
- const exec = __importStar(require("@actions/exec"));
58
57
  const semver = __importStar(require("semver"));
59
- const docker_1 = require("../docker");
60
- const inputs_1 = require("./inputs");
58
+ const docker_1 = require("../docker/docker");
59
+ const exec_1 = require("../exec");
61
60
  class Buildx {
62
61
  constructor(opts) {
63
- var _a;
64
- this.context = opts.context;
65
- this.inputs = new inputs_1.Inputs(this.context);
66
- this.standalone = (_a = opts === null || opts === void 0 ? void 0 : opts.standalone) !== null && _a !== void 0 ? _a : !docker_1.Docker.isAvailable;
62
+ this._standalone = opts === null || opts === void 0 ? void 0 : opts.standalone;
63
+ this._version = '';
64
+ this._versionOnce = false;
67
65
  }
68
66
  static get configDir() {
69
67
  return process.env.BUILDX_CONFIG || path_1.default.join(docker_1.Docker.configDir, 'buildx');
@@ -71,63 +69,76 @@ class Buildx {
71
69
  static get certsDir() {
72
70
  return path_1.default.join(Buildx.configDir, 'certs');
73
71
  }
72
+ isStandalone() {
73
+ var _a;
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ const standalone = (_a = this._standalone) !== null && _a !== void 0 ? _a : !(yield docker_1.Docker.isAvailable());
76
+ core.debug(`Buildx.isStandalone: ${standalone}`);
77
+ return standalone;
78
+ });
79
+ }
74
80
  getCommand(args) {
75
- return {
76
- command: this.standalone ? 'buildx' : 'docker',
77
- args: this.standalone ? args : ['buildx', ...args]
78
- };
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const standalone = yield this.isStandalone();
83
+ return {
84
+ command: standalone ? 'buildx' : 'docker',
85
+ args: standalone ? args : ['buildx', ...args]
86
+ };
87
+ });
79
88
  }
80
89
  isAvailable() {
81
90
  return __awaiter(this, void 0, void 0, function* () {
82
- const cmd = this.getCommand([]);
83
- return yield exec
84
- .getExecOutput(cmd.command, cmd.args, {
91
+ const cmd = yield this.getCommand([]);
92
+ const ok = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
85
93
  ignoreReturnCode: true,
86
94
  silent: true
87
95
  })
88
96
  .then(res => {
89
97
  if (res.stderr.length > 0 && res.exitCode != 0) {
98
+ core.debug(`Buildx.isAvailable cmd err: ${res.stderr.trim()}`);
90
99
  return false;
91
100
  }
92
101
  return res.exitCode == 0;
93
102
  })
94
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
95
103
  .catch(error => {
104
+ core.debug(`Buildx.isAvailable error: ${error}`);
96
105
  return false;
97
106
  });
107
+ core.debug(`Buildx.isAvailable: ${ok}`);
108
+ return ok;
98
109
  });
99
110
  }
100
111
  printInspect(name) {
101
112
  return __awaiter(this, void 0, void 0, function* () {
102
- const cmd = this.getCommand(['inspect', name]);
103
- yield exec.exec(cmd.command, cmd.args, {
113
+ const cmd = yield this.getCommand(['inspect', name]);
114
+ yield exec_1.Exec.exec(cmd.command, cmd.args, {
104
115
  failOnStdErr: false
105
116
  });
106
117
  });
107
118
  }
108
- get version() {
109
- return (() => __awaiter(this, void 0, void 0, function* () {
110
- if (!this._version) {
111
- const cmd = this.getCommand(['version']);
112
- this._version = yield exec
113
- .getExecOutput(cmd.command, cmd.args, {
114
- ignoreReturnCode: true,
115
- silent: true
116
- })
117
- .then(res => {
118
- if (res.stderr.length > 0 && res.exitCode != 0) {
119
- throw new Error(res.stderr.trim());
120
- }
121
- return Buildx.parseVersion(res.stdout.trim());
122
- });
119
+ version() {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ if (this._versionOnce) {
122
+ return this._version;
123
123
  }
124
+ this._versionOnce = true;
125
+ const cmd = yield this.getCommand(['version']);
126
+ this._version = yield exec_1.Exec.getExecOutput(cmd.command, cmd.args, {
127
+ ignoreReturnCode: true,
128
+ silent: true
129
+ }).then(res => {
130
+ if (res.stderr.length > 0 && res.exitCode != 0) {
131
+ throw new Error(res.stderr.trim());
132
+ }
133
+ return Buildx.parseVersion(res.stdout.trim());
134
+ });
124
135
  return this._version;
125
- }))();
136
+ });
126
137
  }
127
138
  printVersion() {
128
139
  return __awaiter(this, void 0, void 0, function* () {
129
- const cmd = this.getCommand(['version']);
130
- yield exec.exec(cmd.command, cmd.args, {
140
+ const cmd = yield this.getCommand(['version']);
141
+ yield exec_1.Exec.exec(cmd.command, cmd.args, {
131
142
  failOnStdErr: false
132
143
  });
133
144
  });
@@ -141,7 +152,7 @@ class Buildx {
141
152
  }
142
153
  versionSatisfies(range, version) {
143
154
  return __awaiter(this, void 0, void 0, function* () {
144
- const ver = version !== null && version !== void 0 ? version : (yield this.version);
155
+ const ver = version !== null && version !== void 0 ? version : (yield this.version());
145
156
  if (!ver) {
146
157
  core.debug(`Buildx.versionSatisfies false: undefined version`);
147
158
  return false;