@forge/cli 7.0.2-next.12 → 7.0.2-next.14

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @forge/cli
2
2
 
3
+ ## 7.0.2-next.14
4
+
5
+ ### Patch Changes
6
+
7
+ - @forge/tunnel@4.0.2-next.13
8
+
9
+ ## 7.0.2-next.13
10
+
11
+ ### Patch Changes
12
+
13
+ - 4fa4386: Verify Docker is installed before running any Docker command
14
+
3
15
  ## 7.0.2-next.12
4
16
 
5
17
  ### Patch Changes
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@forge/cli",
3
- "version": "7.0.2-next.12",
3
+ "version": "7.0.2-next.14",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@forge/cli",
9
- "version": "7.0.2-next.12",
9
+ "version": "7.0.2-next.14",
10
10
  "hasInstallScript": true,
11
11
  "license": "UNLICENSED",
12
12
  "dependencies": {
@@ -17,7 +17,7 @@
17
17
  "@forge/manifest": "5.5.2-next.0",
18
18
  "@forge/node-runtime": "0.6.0-next.8",
19
19
  "@forge/runtime": "5.3.2-next.2",
20
- "@forge/tunnel": "4.0.2-next.12",
20
+ "@forge/tunnel": "4.0.2-next.13",
21
21
  "@forge/util": "1.4.0",
22
22
  "@sentry/node": "7.99.0",
23
23
  "ajv": "^8.12.0",
@@ -988,12 +988,12 @@
988
988
  }
989
989
  },
990
990
  "node_modules/@forge/csp": {
991
- "version": "3.1.5-next.0",
992
- "resolved": "https://registry.npmjs.org/@forge/csp/-/csp-3.1.5-next.0.tgz",
993
- "integrity": "sha512-EZpmWrgZIxpHG89NxrQBG6Iss6K5ayc9cEABGim1EE+3ojZz66OtSIwWRCdye/OK8WiitmCC19ZkwZvOR7ZaVQ==",
991
+ "version": "3.1.5-next.1",
992
+ "resolved": "https://registry.npmjs.org/@forge/csp/-/csp-3.1.5-next.1.tgz",
993
+ "integrity": "sha512-eGnj9NAb0eyuH7TTlfFr6Jr7mTu87BLxeYw2Mt9SjyiieYFfHYRVdfTtEzX+08fT8DjxoLsxVNnqbemkanmQeQ==",
994
994
  "dependencies": {
995
995
  "cheerio": "^0.22.0",
996
- "content-security-policy-parser": "^0.5.0"
996
+ "content-security-policy-parser": "^0.4.1"
997
997
  }
998
998
  },
999
999
  "node_modules/@forge/egress": {
@@ -1080,13 +1080,13 @@
1080
1080
  }
1081
1081
  },
1082
1082
  "node_modules/@forge/tunnel": {
1083
- "version": "4.0.2-next.12",
1084
- "resolved": "https://registry.npmjs.org/@forge/tunnel/-/tunnel-4.0.2-next.12.tgz",
1085
- "integrity": "sha512-Cl8oZOslLchlgznNne2fclbX731P2pRYg/ad6nb1pSxxCjmh+iRBdFGsym5gS1Vr55aA+kdTqqKu1g0RAquJcA==",
1083
+ "version": "4.0.2-next.13",
1084
+ "resolved": "https://registry.npmjs.org/@forge/tunnel/-/tunnel-4.0.2-next.13.tgz",
1085
+ "integrity": "sha512-soScfR1ZTaseiDxVoKxSed+EPRgecO7PXfy1feKeUHgd/qNoUYDv8ZsHpOs/1zFdWgVxoLslI5U5DvZZmf0htg==",
1086
1086
  "dependencies": {
1087
1087
  "@forge/bundler": "4.15.2-next.12",
1088
1088
  "@forge/cli-shared": "3.23.2-next.3",
1089
- "@forge/csp": "3.1.5-next.0",
1089
+ "@forge/csp": "3.1.5-next.1",
1090
1090
  "@forge/runtime": "5.3.2-next.2",
1091
1091
  "express": "^4.18.2",
1092
1092
  "express-intercept": "^1.1.0",
@@ -3328,11 +3328,11 @@
3328
3328
  }
3329
3329
  },
3330
3330
  "node_modules/content-security-policy-parser": {
3331
- "version": "0.5.0",
3332
- "resolved": "https://registry.npmjs.org/content-security-policy-parser/-/content-security-policy-parser-0.5.0.tgz",
3333
- "integrity": "sha1-koAZUFkID6eIxR+EaapHJfKO/vc= sha512-ozWQUpVaL33crxwh0lN5MMoBbrpeiaRDw/Fx4oW5wd7aDZughPe5YkzT9NCez7lrVoWyjSmj++ewnuVVgHDEJA==",
3331
+ "version": "0.4.1",
3332
+ "resolved": "https://registry.npmjs.org/content-security-policy-parser/-/content-security-policy-parser-0.4.1.tgz",
3333
+ "integrity": "sha1-J7UHZJsbdbx18XnfkZGahp7hFrU= sha512-NNJS8XPnx3OKr/CUOSwDSJw+lWTrZMYnclLKj0Y9CYOfJNJTWLFGPg3u2hYgbXMXKVRkZR2fbyReNQ1mUff/Qg==",
3334
3334
  "engines": {
3335
- "node": ">=18.0.0"
3335
+ "node": ">=8.0.0"
3336
3336
  }
3337
3337
  },
3338
3338
  "node_modules/content-type": {
@@ -1,5 +1,5 @@
1
- import { UserError } from '@forge/cli-shared';
2
1
  import { spawn } from 'cross-spawn';
2
+ import { UserError } from '@forge/cli-shared';
3
3
  export declare class DockerError extends UserError {
4
4
  readonly code: DockerErrorCode;
5
5
  constructor(message: string, code: DockerErrorCode);
@@ -10,6 +10,7 @@ export declare enum DockerErrorCode {
10
10
  NOT_INSTALLED = 1
11
11
  }
12
12
  export declare class DockerService {
13
+ verifyInstalled(): void;
13
14
  runContainer(args: string[]): ReturnType<typeof spawn>;
14
15
  getDockerVersion(debugEnabled: boolean): Promise<string>;
15
16
  removeContainer(containerName: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"docker-service.d.ts","sourceRoot":"","sources":["../../src/service/docker-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWpC,qBAAa,WAAY,SAAQ,SAAS;aAGtB,IAAI,EAAE,eAAe;gBADrC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,eAAe;CAIxC;AAED,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAE1E,oBAAY,eAAe;IACzB,kBAAkB,IAAA;IAClB,aAAa,IAAA;CACd;AAED,qBAAa,aAAa;IACjB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC;IAIhD,gBAAgB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBxD,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC;IAI1D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IActE,OAAO,CAAC,WAAW;CAWpB"}
1
+ {"version":3,"file":"docker-service.d.ts","sourceRoot":"","sources":["../../src/service/docker-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAQ,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAUpD,qBAAa,WAAY,SAAQ,SAAS;aAGtB,IAAI,EAAE,eAAe;gBADrC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,eAAe;CAIxC;AAED,eAAO,MAAM,oBAAoB,wCAAwC,CAAC;AAE1E,oBAAY,eAAe;IACzB,kBAAkB,IAAA;IAClB,aAAa,IAAA;CACd;AAED,qBAAa,aAAa;IACjB,eAAe,IAAI,IAAI;IAMvB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC;IAKhD,gBAAgB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAexD,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC;IAK1D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IActE,OAAO,CAAC,WAAW;CAWpB"}
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DockerService = exports.DockerErrorCode = exports.DOCKER_DOWNLOAD_LINK = exports.DockerError = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const cli_shared_1 = require("@forge/cli-shared");
6
- const command_exists_1 = tslib_1.__importDefault(require("command-exists"));
7
5
  const child_process_1 = require("child_process");
8
- const cross_spawn_1 = require("cross-spawn");
9
6
  const path_1 = tslib_1.__importDefault(require("path"));
7
+ const command_exists_1 = tslib_1.__importDefault(require("command-exists"));
8
+ const cross_spawn_1 = require("cross-spawn");
9
+ const cli_shared_1 = require("@forge/cli-shared");
10
10
  class DockerError extends cli_shared_1.UserError {
11
11
  constructor(message, code) {
12
12
  super(message);
@@ -21,13 +21,17 @@ var DockerErrorCode;
21
21
  DockerErrorCode[DockerErrorCode["NOT_INSTALLED"] = 1] = "NOT_INSTALLED";
22
22
  })(DockerErrorCode = exports.DockerErrorCode || (exports.DockerErrorCode = {}));
23
23
  class DockerService {
24
+ verifyInstalled() {
25
+ if (!command_exists_1.default.sync('docker')) {
26
+ throw new DockerError(cli_shared_1.Text.tunnel.error.dockerNotInstalled(exports.DOCKER_DOWNLOAD_LINK), DockerErrorCode.NOT_INSTALLED);
27
+ }
28
+ }
24
29
  runContainer(args) {
30
+ this.verifyInstalled();
25
31
  return (0, cross_spawn_1.spawn)('docker', ['run', ...args], { stdio: ['inherit', 'inherit', 'pipe'] });
26
32
  }
27
33
  async getDockerVersion(debugEnabled) {
28
- if (!command_exists_1.default.sync('docker')) {
29
- throw new DockerError(cli_shared_1.Text.tunnel.error.dockerNotInstalled(exports.DOCKER_DOWNLOAD_LINK), DockerErrorCode.NOT_INSTALLED);
30
- }
34
+ this.verifyInstalled();
31
35
  const { err, stdout } = await this.execPromise('docker version --format "{{.Server.Version}}"');
32
36
  if (err) {
33
37
  throw new DockerError(cli_shared_1.Text.tunnel.error.dockerDaemonNotRunning(err.message, debugEnabled), DockerErrorCode.DAEMON_NOT_RUNNING);
@@ -36,9 +40,11 @@ class DockerService {
36
40
  return dockerVersion;
37
41
  }
38
42
  async removeContainer(containerName) {
43
+ this.verifyInstalled();
39
44
  await this.execPromise(`docker rm -f ${containerName}`);
40
45
  }
41
46
  downloadImage(imageName) {
47
+ this.verifyInstalled();
42
48
  return (0, cross_spawn_1.spawn)('docker', ['pull', imageName]);
43
49
  }
44
50
  startCleanupWorker(pids, containerName) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cli",
3
- "version": "7.0.2-next.12",
3
+ "version": "7.0.2-next.14",
4
4
  "description": "A command line interface for managing Atlassian-hosted apps",
5
5
  "author": "Atlassian",
6
6
  "license": "UNLICENSED",
@@ -25,7 +25,7 @@
25
25
  "@forge/manifest": "5.5.2-next.0",
26
26
  "@forge/node-runtime": "0.6.0-next.8",
27
27
  "@forge/runtime": "5.3.2-next.2",
28
- "@forge/tunnel": "4.0.2-next.12",
28
+ "@forge/tunnel": "4.0.2-next.13",
29
29
  "@forge/util": "1.4.0",
30
30
  "@sentry/node": "7.99.0",
31
31
  "ajv": "^8.12.0",