@forge/tunnel

6.3.9-next.106.3.9-next.11
~

Modified (5 files)

Index: package/out/command/interactors/tunnel-interactor.js
===================================================================
--- package/out/command/interactors/tunnel-interactor.js
+++ package/out/command/interactors/tunnel-interactor.js
@@ -9,11 +9,13 @@
 const fs_1 = tslib_1.__importDefault(require("fs"));
 const chokidar_1 = tslib_1.__importDefault(require("chokidar"));
 class TunnelInteractor {
     logger;
+    dockerAuthenticator;
     statsigService;
-    constructor(logger, statsigService) {
+    constructor(logger, statsigService, dockerAuthenticator) {
         this.logger = logger;
+        this.dockerAuthenticator = dockerAuthenticator;
         this.statsigService = statsigService;
     }
     logTunnelStatus(localPort, tunnelOptions) {
         this.logger.info('');
@@ -86,8 +88,31 @@
         const multiCompiler = new multi_compiler_watcher_1.MultiCompilerWatcher(faasServer, uiServers);
         if (tunnelOptions.verify) {
             await (0, bundler_1.runLinter)(this.statsigService);
         }
+        if (tunnelOptions.containersDockerComposeFiles) {
+            try {
+                if (this.dockerAuthenticator) {
+                    this.logger.info('');
+                    this.logger.info(cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.tunnel.authenticatingDocker));
+                    const childProcess = await this.dockerAuthenticator.authenticateDocker();
+                    await (0, cli_shared_1.processDockerAuthentication)(childProcess);
+                }
+                for (const [serviceKey, filePath] of Object.entries(tunnelOptions.containersDockerComposeFiles)) {
+                    this.logger.info('');
+                    this.logger.info(cli_shared_1.Text.tunnel.startingContainerService(serviceKey));
+                    await (0, cli_shared_1.startDockerComposeStack)(filePath, serviceKey);
+                }
+            }
+            catch (err) {
+                this.logger.error(new Error(cli_shared_1.Text.tunnel.error.unableToStartContainerServices));
+                for (const filePath of Object.values(tunnelOptions.containersDockerComposeFiles)) {
+                    await (0, cli_shared_1.deleteDockerComposeFile)(filePath);
+                }
+                throw err;
+            }
+            this.logger.info('');
+        }
         this.logger.info(cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.tunnel.bundlingHeader));
         try {
             const output = await multiCompiler.compileAndWatch({
                 onRuntimeChange: { onBuildWillStart, onBuildFinished: onBuildFinished('runtime') },
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/tunnel",
-  "version": "6.3.9-next.10",
+  "version": "6.3.9-next.11",
   "description": "Tunnel functionality for Forge CLI",
   "author": "Atlassian",
   "license": "SEE LICENSE IN LICENSE.txt",
   "main": "out/index.js",
@@ -10,10 +10,10 @@
     "clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
     "compile": "tsc -b -v"
   },
   "dependencies": {
-    "@forge/bundler": "6.1.18-next.10",
-    "@forge/cli-shared": "8.15.1-next.8",
+    "@forge/bundler": "6.1.18-next.11",
+    "@forge/cli-shared": "8.15.1-next.9",
     "@forge/csp": "5.6.1",
     "@forge/runtime": "6.1.2",
     "@forge/util": "^2.0.1",
     "cheerio": "^1.1.0",
Index: package/out/command/interactors/tunnel-interactor.d.ts.map
===================================================================
--- package/out/command/interactors/tunnel-interactor.d.ts.map
+++ package/out/command/interactors/tunnel-interactor.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"tunnel-interactor.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/tunnel-interactor.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAyC,MAAM,EAAQ,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAE7B,MAAM,EAAE,MAAM,EAC/B,cAAc,EAAE,cAAc;IAKhC,OAAO,CAAC,eAAe;IAShB,mBAAmB,CACxB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACjC,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,mBAAmB,EAAE,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsCT,6BAA6B,CAAC,gBAAgB,EAAE,MAAM;IAUtD,QAAQ,sBACM,iBAAiB,kBACrB,aAAa,KAC3B,QAAQ,cAAc,GAAG,SAAS,CAAC,CAsDpC;CACH"}
\ No newline at end of file
+{"version":3,"file":"tunnel-interactor.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/tunnel-interactor.ts"],"names":[],"mappings":";AACA,OAAO,EAA4B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAGL,MAAM,EAEN,aAAa,EACb,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CAC7C;AAED,qBAAa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAJtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAE7B,MAAM,EAAE,MAAM,EAC/B,cAAc,EAAE,cAAc,EACb,mBAAmB,EAAE,mBAAmB;IAK3D,OAAO,CAAC,eAAe;IAShB,mBAAmB,CACxB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACjC,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,mBAAmB,EAAE,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsCT,6BAA6B,CAAC,gBAAgB,EAAE,MAAM;IAUtD,QAAQ,sBACM,iBAAiB,kBACrB,aAAa,KAC3B,QAAQ,cAAc,GAAG,SAAS,CAAC,CAqFpC;CACH"}
\ No newline at end of file
File too large for inline diff
Index: package/out/command/interactors/tunnel-interactor.d.ts
===================================================================
--- package/out/command/interactors/tunnel-interactor.d.ts
+++ package/out/command/interactors/tunnel-interactor.d.ts
@@ -1,12 +1,18 @@
+/// <reference types="node" resolution-mode="require"/>
 import { WatcherMonitor } from '@forge/bundler';
 import { Logger, TunnelOptions, StatsigService } from '@forge/cli-shared';
+import { ChildProcess } from 'child_process';
 import { StartTunnelResult } from '../start-tunnel-command';
 import chokidar, { FSWatcher } from 'chokidar';
+export interface DockerAuthenticator {
+    authenticateDocker(): Promise<ChildProcess>;
+}
 export declare class TunnelInteractor {
     private readonly logger;
+    private readonly dockerAuthenticator;
     private readonly statsigService;
-    constructor(logger: Logger, statsigService: StatsigService);
+    constructor(logger: Logger, statsigService: StatsigService, dockerAuthenticator: DockerAuthenticator);
     private logTunnelStatus;
     handleUserExitEvent(stopFunction: () => Promise<void>, bundleMonitor: WatcherMonitor | undefined, manifestFileWatcher: FSWatcher): Promise<void>;
     watchAndWarnOnManifestChanges(manifestFilePath: string): chokidar.FSWatcher;
     watchApp: (startTunnelResult: StartTunnelResult, tunnelOptions?: TunnelOptions) => Promise<WatcherMonitor | undefined>;