@theia/dev-container 1.55.1 → 1.57.0-next.22
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/README.md +4 -3
- package/lib/electron-browser/container-connection-contribution.d.ts +11 -5
- package/lib/electron-browser/container-connection-contribution.d.ts.map +1 -1
- package/lib/electron-browser/container-connection-contribution.js +46 -5
- package/lib/electron-browser/container-connection-contribution.js.map +1 -1
- package/lib/electron-browser/container-info-contribution.d.ts.map +1 -1
- package/lib/electron-browser/container-info-contribution.js +2 -1
- package/lib/electron-browser/container-info-contribution.js.map +1 -1
- package/lib/electron-browser/dev-container-frontend-module.d.ts.map +1 -1
- package/lib/electron-browser/dev-container-frontend-module.js +2 -0
- package/lib/electron-browser/dev-container-frontend-module.js.map +1 -1
- package/lib/electron-common/dev-container-workspaces.d.ts +3 -0
- package/lib/electron-common/dev-container-workspaces.d.ts.map +1 -0
- package/lib/electron-common/dev-container-workspaces.js +21 -0
- package/lib/electron-common/dev-container-workspaces.js.map +1 -0
- package/lib/electron-common/remote-container-connection-provider.d.ts +2 -1
- package/lib/electron-common/remote-container-connection-provider.d.ts.map +1 -1
- package/lib/electron-node/dev-container-backend-module.d.ts.map +1 -1
- package/lib/electron-node/dev-container-backend-module.js +4 -0
- package/lib/electron-node/dev-container-backend-module.js.map +1 -1
- package/lib/electron-node/dev-container-file-service.d.ts +1 -1
- package/lib/electron-node/dev-container-file-service.d.ts.map +1 -1
- package/lib/electron-node/dev-container-file-service.js +2 -6
- package/lib/electron-node/dev-container-file-service.js.map +1 -1
- package/lib/electron-node/dev-container-workspace-handler.d.ts +7 -0
- package/lib/electron-node/dev-container-workspace-handler.d.ts.map +1 -0
- package/lib/electron-node/dev-container-workspace-handler.js +21 -0
- package/lib/electron-node/dev-container-workspace-handler.js.map +1 -0
- package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.d.ts.map +1 -1
- package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js +7 -1
- package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js.map +1 -1
- package/lib/electron-node/docker-container-service.d.ts +2 -2
- package/lib/electron-node/docker-container-service.d.ts.map +1 -1
- package/lib/electron-node/docker-container-service.js +6 -5
- package/lib/electron-node/docker-container-service.js.map +1 -1
- package/lib/electron-node/remote-container-connection-provider.d.ts +2 -1
- package/lib/electron-node/remote-container-connection-provider.d.ts.map +1 -1
- package/lib/electron-node/remote-container-connection-provider.js +8 -5
- package/lib/electron-node/remote-container-connection-provider.js.map +1 -1
- package/package.json +7 -7
- package/src/electron-browser/container-connection-contribution.ts +58 -10
- package/src/electron-browser/container-info-contribution.ts +2 -1
- package/src/electron-browser/dev-container-frontend-module.ts +2 -0
- package/src/electron-common/dev-container-workspaces.ts +18 -0
- package/src/electron-common/remote-container-connection-provider.ts +2 -1
- package/src/electron-node/dev-container-backend-module.ts +5 -0
- package/src/electron-node/dev-container-file-service.ts +2 -7
- package/src/electron-node/dev-container-workspace-handler.ts +33 -0
- package/src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts +6 -1
- package/src/electron-node/docker-container-service.ts +6 -7
- package/src/electron-node/remote-container-connection-provider.ts +10 -6
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ The `@theia/dev-container` extension provides functionality to create, start and
|
|
|
17
17
|
|
|
18
18
|
The full devcontainer.json Schema can be found [here](https://containers.dev/implementors/json_reference/).
|
|
19
19
|
Currently only a small number of configuration file properties are implemented. Those include the following:
|
|
20
|
+
|
|
20
21
|
- name
|
|
21
22
|
- Image
|
|
22
23
|
- dockerfile/build.dockerfile
|
|
@@ -25,8 +26,7 @@ Currently only a small number of configuration file properties are implemented.
|
|
|
25
26
|
- forwardPorts
|
|
26
27
|
- mounts
|
|
27
28
|
|
|
28
|
-
see `main-container-creation-contributions.ts` for how to implementations or how to implement additional ones.
|
|
29
|
-
|
|
29
|
+
see `main-container-creation-contributions.ts` for how to implementations or how to implement additional ones.
|
|
30
30
|
|
|
31
31
|
## Additional Information
|
|
32
32
|
|
|
@@ -39,5 +39,6 @@ see `main-container-creation-contributions.ts` for how to implementations or how
|
|
|
39
39
|
- [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
|
|
40
40
|
|
|
41
41
|
## Trademark
|
|
42
|
+
|
|
42
43
|
"Theia" is a trademark of the Eclipse Foundation
|
|
43
|
-
https://www.eclipse.org/theia
|
|
44
|
+
<https://www.eclipse.org/theia>
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import { AbstractRemoteRegistryContribution, RemoteRegistry } from '@theia/remote/lib/electron-browser/remote-registry-contribution';
|
|
2
|
-
import { RemoteContainerConnectionProvider } from '../electron-common/remote-container-connection-provider';
|
|
2
|
+
import { DevContainerFile, RemoteContainerConnectionProvider } from '../electron-common/remote-container-connection-provider';
|
|
3
3
|
import { RemotePreferences } from '@theia/remote/lib/electron-browser/remote-preferences';
|
|
4
4
|
import { WorkspaceStorageService } from '@theia/workspace/lib/browser/workspace-storage-service';
|
|
5
|
-
import { Command, QuickInputService } from '@theia/core';
|
|
6
|
-
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
5
|
+
import { Command, MaybePromise, QuickInputService, URI } from '@theia/core';
|
|
6
|
+
import { WorkspaceInput, WorkspaceOpenHandlerContribution, WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
7
7
|
import { ContainerOutputProvider } from './container-output-provider';
|
|
8
|
+
import { WorkspaceServer } from '@theia/workspace/lib/common';
|
|
8
9
|
export declare namespace RemoteContainerCommands {
|
|
9
10
|
const REOPEN_IN_CONTAINER: Command;
|
|
10
11
|
}
|
|
11
|
-
export declare class ContainerConnectionContribution extends AbstractRemoteRegistryContribution {
|
|
12
|
+
export declare class ContainerConnectionContribution extends AbstractRemoteRegistryContribution implements WorkspaceOpenHandlerContribution {
|
|
12
13
|
protected readonly connectionProvider: RemoteContainerConnectionProvider;
|
|
13
14
|
protected readonly remotePreferences: RemotePreferences;
|
|
14
15
|
protected readonly workspaceStorageService: WorkspaceStorageService;
|
|
15
16
|
protected readonly workspaceService: WorkspaceService;
|
|
17
|
+
protected readonly workspaceServer: WorkspaceServer;
|
|
16
18
|
protected readonly quickInputService: QuickInputService;
|
|
17
19
|
protected readonly containerOutputProvider: ContainerOutputProvider;
|
|
18
20
|
registerRemoteCommands(registry: RemoteRegistry): void;
|
|
21
|
+
canHandle(uri: URI): MaybePromise<boolean>;
|
|
22
|
+
openWorkspace(uri: URI, options?: WorkspaceInput | undefined): Promise<void>;
|
|
23
|
+
getWorkspaceLabel(uri: URI): Promise<string | undefined>;
|
|
19
24
|
openInContainer(): Promise<void>;
|
|
20
|
-
|
|
25
|
+
doOpenInContainer(devcontainerFile: DevContainerFile, workspaceUri?: string): Promise<void>;
|
|
26
|
+
getOrSelectDevcontainerFile(): Promise<DevContainerFile | undefined>;
|
|
21
27
|
}
|
|
22
28
|
//# sourceMappingURL=container-connection-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-connection-contribution.d.ts","sourceRoot":"","sources":["../../src/electron-browser/container-connection-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kCAAkC,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACrI,OAAO,EAAqB,iCAAiC,EAAE,MAAM,yDAAyD,CAAC;
|
|
1
|
+
{"version":3,"file":"container-connection-contribution.d.ts","sourceRoot":"","sources":["../../src/electron-browser/container-connection-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kCAAkC,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAqB,iCAAiC,EAAE,MAAM,yDAAyD,CAAC;AACjJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AACpI,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,yBAAiB,uBAAuB,CAAC;IAC9B,MAAM,mBAAmB,SAIC,CAAC;CACrC;AAGD,qBACa,+BAAgC,SAAQ,kCAAmC,YAAW,gCAAgC;IAG/H,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;IAGzE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAEpE,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAMtD,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC;IAIpC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5E,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUxD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3F,2BAA2B,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAqB7E"}
|
|
@@ -25,6 +25,8 @@ const workspace_storage_service_1 = require("@theia/workspace/lib/browser/worksp
|
|
|
25
25
|
const core_1 = require("@theia/core");
|
|
26
26
|
const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
|
|
27
27
|
const container_output_provider_1 = require("./container-output-provider");
|
|
28
|
+
const common_1 = require("@theia/workspace/lib/common");
|
|
29
|
+
const dev_container_workspaces_1 = require("../electron-common/dev-container-workspaces");
|
|
28
30
|
var RemoteContainerCommands;
|
|
29
31
|
(function (RemoteContainerCommands) {
|
|
30
32
|
RemoteContainerCommands.REOPEN_IN_CONTAINER = core_1.Command.toLocalizedCommand({
|
|
@@ -40,36 +42,71 @@ let ContainerConnectionContribution = class ContainerConnectionContribution exte
|
|
|
40
42
|
execute: () => this.openInContainer()
|
|
41
43
|
});
|
|
42
44
|
}
|
|
45
|
+
canHandle(uri) {
|
|
46
|
+
return uri.scheme === dev_container_workspaces_1.DEV_CONTAINER_WORKSPACE_SCHEME;
|
|
47
|
+
}
|
|
48
|
+
async openWorkspace(uri, options) {
|
|
49
|
+
const filePath = new URLSearchParams(uri.query).get(dev_container_workspaces_1.DEV_CONTAINER_PATH_QUERY);
|
|
50
|
+
if (!filePath) {
|
|
51
|
+
throw new Error('No devcontainer file specified for workspace');
|
|
52
|
+
}
|
|
53
|
+
const devcontainerFiles = await this.connectionProvider.getDevContainerFiles(uri.path.toString());
|
|
54
|
+
const devcontainerFile = devcontainerFiles.find(file => file.path === filePath);
|
|
55
|
+
if (!devcontainerFile) {
|
|
56
|
+
throw new Error(`Devcontainer file at ${filePath} not found in workspace`);
|
|
57
|
+
}
|
|
58
|
+
return this.doOpenInContainer(devcontainerFile, uri.toString());
|
|
59
|
+
}
|
|
60
|
+
async getWorkspaceLabel(uri) {
|
|
61
|
+
const containerFilePath = new URLSearchParams(uri.query).get(dev_container_workspaces_1.DEV_CONTAINER_PATH_QUERY);
|
|
62
|
+
if (!containerFilePath) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
;
|
|
66
|
+
const files = await this.connectionProvider.getDevContainerFiles(uri.path.toString());
|
|
67
|
+
const devcontainerFile = files.find(file => file.path === containerFilePath);
|
|
68
|
+
return `${uri.path.base} [Dev Container: ${devcontainerFile === null || devcontainerFile === void 0 ? void 0 : devcontainerFile.name}]`;
|
|
69
|
+
}
|
|
43
70
|
async openInContainer() {
|
|
44
71
|
const devcontainerFile = await this.getOrSelectDevcontainerFile();
|
|
45
72
|
if (!devcontainerFile) {
|
|
46
73
|
return;
|
|
47
74
|
}
|
|
48
|
-
|
|
75
|
+
this.doOpenInContainer(devcontainerFile);
|
|
76
|
+
}
|
|
77
|
+
async doOpenInContainer(devcontainerFile, workspaceUri) {
|
|
78
|
+
var _a;
|
|
79
|
+
const lastContainerInfoKey = `${LAST_USED_CONTAINER}:${devcontainerFile.path}`;
|
|
49
80
|
const lastContainerInfo = await this.workspaceStorageService.getData(lastContainerInfoKey);
|
|
50
81
|
this.containerOutputProvider.openChannel();
|
|
51
82
|
const connectionResult = await this.connectionProvider.connectToContainer({
|
|
52
83
|
nodeDownloadTemplate: this.remotePreferences['remote.nodeDownloadTemplate'],
|
|
53
84
|
lastContainerInfo,
|
|
54
|
-
devcontainerFile
|
|
85
|
+
devcontainerFile: devcontainerFile.path,
|
|
86
|
+
workspaceUri
|
|
55
87
|
});
|
|
56
88
|
this.workspaceStorageService.setData(lastContainerInfoKey, {
|
|
57
89
|
id: connectionResult.containerId,
|
|
58
90
|
lastUsed: Date.now()
|
|
59
91
|
});
|
|
92
|
+
this.workspaceServer.setMostRecentlyUsedWorkspace(`${dev_container_workspaces_1.DEV_CONTAINER_WORKSPACE_SCHEME}:${(_a = this.workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.resource.path}?${dev_container_workspaces_1.DEV_CONTAINER_PATH_QUERY}=${devcontainerFile.path}`);
|
|
60
93
|
this.openRemote(connectionResult.port, false, connectionResult.workspacePath);
|
|
61
94
|
}
|
|
62
95
|
async getOrSelectDevcontainerFile() {
|
|
63
96
|
var _a;
|
|
64
|
-
const
|
|
97
|
+
const workspace = this.workspaceService.workspace;
|
|
98
|
+
if (!workspace) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const devcontainerFiles = await this.connectionProvider.getDevContainerFiles(workspace.resource.path.toString());
|
|
65
102
|
if (devcontainerFiles.length === 1) {
|
|
66
|
-
return devcontainerFiles[0]
|
|
103
|
+
return devcontainerFiles[0];
|
|
67
104
|
}
|
|
68
105
|
return (_a = (await this.quickInputService.pick(devcontainerFiles.map(file => ({
|
|
69
106
|
type: 'item',
|
|
70
107
|
label: file.name,
|
|
71
108
|
description: file.path,
|
|
72
|
-
file: file
|
|
109
|
+
file: file,
|
|
73
110
|
})), {
|
|
74
111
|
title: 'Select a devcontainer.json file'
|
|
75
112
|
}))) === null || _a === void 0 ? void 0 : _a.file;
|
|
@@ -92,6 +129,10 @@ tslib_1.__decorate([
|
|
|
92
129
|
(0, inversify_1.inject)(workspace_service_1.WorkspaceService),
|
|
93
130
|
tslib_1.__metadata("design:type", workspace_service_1.WorkspaceService)
|
|
94
131
|
], ContainerConnectionContribution.prototype, "workspaceService", void 0);
|
|
132
|
+
tslib_1.__decorate([
|
|
133
|
+
(0, inversify_1.inject)(common_1.WorkspaceServer),
|
|
134
|
+
tslib_1.__metadata("design:type", Object)
|
|
135
|
+
], ContainerConnectionContribution.prototype, "workspaceServer", void 0);
|
|
95
136
|
tslib_1.__decorate([
|
|
96
137
|
(0, inversify_1.inject)(core_1.QuickInputService),
|
|
97
138
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-connection-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/container-connection-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,kHAAqI;AACrI,
|
|
1
|
+
{"version":3,"file":"container-connection-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/container-connection-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-info-contribution.d.ts","sourceRoot":"","sources":["../../src/electron-browser/container-info-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yDAAyD,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,4EAA4E,CAAC;
|
|
1
|
+
{"version":3,"file":"container-info-contribution.d.ts","sourceRoot":"","sources":["../../src/electron-browser/container-info-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yDAAyD,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,4EAA4E,CAAC;AAGnH,qBACa,yBAA0B,YAAW,+BAA+B;IAG7E,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;IAGzE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,aAAa,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAE1C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAYjC"}
|
|
@@ -20,10 +20,11 @@ const tslib_1 = require("tslib");
|
|
|
20
20
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
21
|
const remote_container_connection_provider_1 = require("../electron-common/remote-container-connection-provider");
|
|
22
22
|
const port_forwarding_service_1 = require("@theia/remote/lib/electron-browser/port-forwarding/port-forwarding-service");
|
|
23
|
+
const electron_local_ws_connection_source_1 = require("@theia/core/lib/electron-browser/messaging/electron-local-ws-connection-source");
|
|
23
24
|
let ContainerInfoContribution = class ContainerInfoContribution {
|
|
24
25
|
async onStart() {
|
|
25
26
|
var _a, _b, _c;
|
|
26
|
-
this.containerInfo = await this.connectionProvider.getCurrentContainerInfo(parseInt((_a =
|
|
27
|
+
this.containerInfo = await this.connectionProvider.getCurrentContainerInfo(parseInt((_a = (0, electron_local_ws_connection_source_1.getCurrentPort)()) !== null && _a !== void 0 ? _a : '0'));
|
|
27
28
|
this.portForwardingService.forwardedPorts = Object.entries((_c = (_b = this.containerInfo) === null || _b === void 0 ? void 0 : _b.NetworkSettings.Ports) !== null && _c !== void 0 ? _c : {}).flatMap(([_, ports]) => (ports.map(port => {
|
|
28
29
|
var _a, _b;
|
|
29
30
|
return ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-info-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/container-info-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAGlE,kHAA4G;AAC5G,wHAAmH;
|
|
1
|
+
{"version":3,"file":"container-info-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/container-info-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAGlE,kHAA4G;AAC5G,wHAAmH;AACnH,wIAAgH;AAGzG,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAUlC,KAAK,CAAC,OAAO;;QACT,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAA,IAAA,oDAAc,GAAE,mCAAI,GAAG,CAAC,CAAC,CAAC;QAE9G,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,eAAe,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAChI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;YAAC,OAAA,CAAC;gBACf,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE;gBAC1B,SAAS,EAAE,QAAQ,CAAC,MAAA,IAAI,CAAC,QAAQ,mCAAI,GAAG,CAAC;gBACzC,MAAM,EAAE,WAAW;aACtB,CAAC,CAAA;SAAA,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;CAEJ,CAAA;AAtBY,8DAAyB;AAGf;IADlB,IAAA,kBAAM,EAAC,wEAAiC,CAAC;;qEAC+B;AAGtD;IADlB,IAAA,kBAAM,EAAC,+CAAqB,CAAC;sCACY,+CAAqB;wEAAC;oCANvD,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CAsBrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-frontend-module.d.ts","sourceRoot":"","sources":["../../src/electron-browser/dev-container-frontend-module.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"dev-container-frontend-module.d.ts","sourceRoot":"","sources":["../../src/electron-browser/dev-container-frontend-module.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAU/D,wBAcG"}
|
|
@@ -23,9 +23,11 @@ const service_connection_provider_1 = require("@theia/core/lib/browser/messaging
|
|
|
23
23
|
const container_output_provider_1 = require("./container-output-provider");
|
|
24
24
|
const container_info_contribution_1 = require("./container-info-contribution");
|
|
25
25
|
const browser_1 = require("@theia/core/lib/browser");
|
|
26
|
+
const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
|
|
26
27
|
exports.default = new inversify_1.ContainerModule(bind => {
|
|
27
28
|
bind(container_connection_contribution_1.ContainerConnectionContribution).toSelf().inSingletonScope();
|
|
28
29
|
bind(remote_registry_contribution_1.RemoteRegistryContribution).toService(container_connection_contribution_1.ContainerConnectionContribution);
|
|
30
|
+
bind(workspace_service_1.WorkspaceOpenHandlerContribution).toService(container_connection_contribution_1.ContainerConnectionContribution);
|
|
29
31
|
bind(container_output_provider_1.ContainerOutputProvider).toSelf().inSingletonScope();
|
|
30
32
|
bind(remote_container_connection_provider_1.RemoteContainerConnectionProvider).toDynamicValue(ctx => {
|
|
31
33
|
const outputProvider = ctx.container.get(container_output_provider_1.ContainerOutputProvider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-frontend-module.js","sourceRoot":"","sources":["../../src/electron-browser/dev-container-frontend-module.ts"],"names":[],"mappings":";;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,4DAA+D;AAC/D,kHAA6G;AAC7G,kHAAmJ;AACnJ,2FAAsF;AACtF,+GAA0G;AAC1G,2EAAsE;AACtE,+EAA0E;AAC1E,qDAA0E;
|
|
1
|
+
{"version":3,"file":"dev-container-frontend-module.js","sourceRoot":"","sources":["../../src/electron-browser/dev-container-frontend-module.ts"],"names":[],"mappings":";;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,4DAA+D;AAC/D,kHAA6G;AAC7G,kHAAmJ;AACnJ,2FAAsF;AACtF,+GAA0G;AAC1G,2EAAsE;AACtE,+EAA0E;AAC1E,qDAA0E;AAC1E,sFAAkG;AAElG,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,mEAA+B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClE,IAAI,CAAC,yDAA0B,CAAC,CAAC,SAAS,CAAC,mEAA+B,CAAC,CAAC;IAC5E,IAAI,CAAC,oDAAgC,CAAC,CAAC,SAAS,CAAC,mEAA+B,CAAC,CAAC;IAElF,IAAI,CAAC,mDAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE1D,IAAI,CAAC,wEAAiC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QACzD,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,mDAAuB,CAAC,CAAC;QAClE,OAAO,uDAAyB,CAAC,gBAAgB,CAAoC,GAAG,CAAC,SAAS,EAAE,4EAAqC,EAAE,cAAc,CAAC,CAAC;IAC/J,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEtB,IAAI,CAAC,uDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,uDAAyB,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-workspaces.d.ts","sourceRoot":"","sources":["../../src/electron-common/dev-container-workspaces.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,8BAA8B,iBAAiB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2024 Typefox and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DEV_CONTAINER_PATH_QUERY = exports.DEV_CONTAINER_WORKSPACE_SCHEME = void 0;
|
|
19
|
+
exports.DEV_CONTAINER_WORKSPACE_SCHEME = 'devcontainer';
|
|
20
|
+
exports.DEV_CONTAINER_PATH_QUERY = 'containerfile';
|
|
21
|
+
//# sourceMappingURL=dev-container-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-workspaces.js","sourceRoot":"","sources":["../../src/electron-common/dev-container-workspaces.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEnE,QAAA,8BAA8B,GAAG,cAAc,CAAC;AAChD,QAAA,wBAAwB,GAAG,eAAe,CAAC"}
|
|
@@ -7,6 +7,7 @@ export interface ContainerConnectionOptions {
|
|
|
7
7
|
nodeDownloadTemplate?: string;
|
|
8
8
|
lastContainerInfo?: LastContainerInfo;
|
|
9
9
|
devcontainerFile: string;
|
|
10
|
+
workspaceUri?: string;
|
|
10
11
|
}
|
|
11
12
|
export interface LastContainerInfo {
|
|
12
13
|
id: string;
|
|
@@ -23,7 +24,7 @@ export interface DevContainerFile {
|
|
|
23
24
|
}
|
|
24
25
|
export interface RemoteContainerConnectionProvider extends RpcServer<ContainerOutputProvider> {
|
|
25
26
|
connectToContainer(options: ContainerConnectionOptions): Promise<ContainerConnectionResult>;
|
|
26
|
-
getDevContainerFiles(): Promise<DevContainerFile[]>;
|
|
27
|
+
getDevContainerFiles(workspacePath: string): Promise<DevContainerFile[]>;
|
|
27
28
|
getCurrentContainerInfo(port: number): Promise<ContainerInspectInfo | undefined>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=remote-container-connection-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/remote-container-connection-provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,qCAAqC,sBAAsB,CAAC;AAEzE,eAAO,MAAM,iCAAiC,eAA8C,CAAC;AAE7F,MAAM,WAAW,0BAA0B;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/remote-container-connection-provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,qCAAqC,sBAAsB,CAAC;AAEzE,eAAO,MAAM,iCAAiC,eAA8C,CAAC;AAE7F,MAAM,WAAW,0BAA0B;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAkC,SAAQ,SAAS,CAAC,uBAAuB,CAAC;IACzF,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5F,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzE,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CACpF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-backend-module.d.ts","sourceRoot":"","sources":["../../src/electron-node/dev-container-backend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-container-backend-module.d.ts","sourceRoot":"","sources":["../../src/electron-node/dev-container-backend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAe/D,eAAO,MAAM,sBAAsB,iBAgBjC,CAAC;;AAEH,wBAaG"}
|
|
@@ -27,6 +27,8 @@ const dev_container_file_service_1 = require("./dev-container-file-service");
|
|
|
27
27
|
const cli_enhancing_creation_contributions_1 = require("./devcontainer-contributions/cli-enhancing-creation-contributions");
|
|
28
28
|
const remote_cli_contribution_1 = require("@theia/core/lib/node/remote/remote-cli-contribution");
|
|
29
29
|
const profile_file_modification_contribution_1 = require("./devcontainer-contributions/profile-file-modification-contribution");
|
|
30
|
+
const dev_container_workspace_handler_1 = require("./dev-container-workspace-handler");
|
|
31
|
+
const default_workspace_server_1 = require("@theia/workspace/lib/node/default-workspace-server");
|
|
30
32
|
exports.remoteConnectionModule = connection_container_module_1.ConnectionContainerModule.create(({ bind, bindBackendService }) => {
|
|
31
33
|
(0, core_1.bindContributionProvider)(bind, docker_container_service_1.ContainerCreationContribution);
|
|
32
34
|
(0, main_container_creation_contributions_1.registerContainerCreationContributions)(bind);
|
|
@@ -50,5 +52,7 @@ exports.default = new inversify_1.ContainerModule((bind, unbind, isBound, rebind
|
|
|
50
52
|
bind(cli_enhancing_creation_contributions_1.SettingsContribution).toSelf().inSingletonScope();
|
|
51
53
|
bind(remote_cli_contribution_1.RemoteCliContribution).toService(cli_enhancing_creation_contributions_1.ExtensionsContribution);
|
|
52
54
|
bind(remote_cli_contribution_1.RemoteCliContribution).toService(cli_enhancing_creation_contributions_1.SettingsContribution);
|
|
55
|
+
bind(dev_container_workspace_handler_1.DevContainerWorkspaceHandler).toSelf().inSingletonScope();
|
|
56
|
+
bind(default_workspace_server_1.WorkspaceHandlerContribution).toService(dev_container_workspace_handler_1.DevContainerWorkspaceHandler);
|
|
53
57
|
});
|
|
54
58
|
//# sourceMappingURL=dev-container-backend-module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-backend-module.js","sourceRoot":"","sources":["../../src/electron-node/dev-container-backend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,4DAA+D;AAC/D,4GAAuG;AACvG,iGAAwF;AACxF,kHAAmJ;AACnJ,yEAAmG;AACnG,sCAAgG;AAChG,8HAA4H;AAC5H,6EAAuE;AAEvE,4HAAyK;AACzK,iGAA4F;AAC5F,gIAA0H;
|
|
1
|
+
{"version":3,"file":"dev-container-backend-module.js","sourceRoot":"","sources":["../../src/electron-node/dev-container-backend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,4DAA+D;AAC/D,4GAAuG;AACvG,iGAAwF;AACxF,kHAAmJ;AACnJ,yEAAmG;AACnG,sCAAgG;AAChG,8HAA4H;AAC5H,6EAAuE;AAEvE,4HAAyK;AACzK,iGAA4F;AAC5F,gIAA0H;AAC1H,uFAAiF;AACjF,iGAAkG;AAErF,QAAA,sBAAsB,GAAG,uDAAyB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE;IACpG,IAAA,+BAAwB,EAAC,IAAI,EAAE,wDAA6B,CAAC,CAAC;IAC9D,IAAA,8EAAsC,EAAC,IAAI,CAAC,CAAC;IAC7C,IAAA,6EAAsC,EAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,4EAAmC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtE,IAAI,CAAC,wDAA6B,CAAC,CAAC,SAAS,CAAC,4EAAmC,CAAC,CAAC;IAEnF,IAAI,CAAC,qEAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,wEAAiC,CAAC,CAAC,SAAS,CAAC,qEAA8B,CAAC,CAAC;IAClF,IAAI,CAAC,wBAAiB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CACzC,IAAI,2BAAoB,CAA0B,4EAAqC,EAAE,MAAM,CAAC,EAAE;QAC9F,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoC,wEAAiC,CAAC,CAAC;QACvG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACjE,IAAI,CAAC,iDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,uDAAyB,CAAC,CAAC,eAAe,CAAC,8BAAsB,CAAC,CAAC;IAExE,IAAI,CAAC,oDAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE1D,IAAI,CAAC,6DAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,2DAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,+CAAqB,CAAC,CAAC,SAAS,CAAC,6DAAsB,CAAC,CAAC;IAC9D,IAAI,CAAC,+CAAqB,CAAC,CAAC,SAAS,CAAC,2DAAoB,CAAC,CAAC;IAE5D,IAAI,CAAC,8DAA4B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/D,IAAI,CAAC,uDAA4B,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { DevContainerConfiguration } from './devcontainer-file';
|
|
|
4
4
|
export declare class DevContainerFileService {
|
|
5
5
|
protected readonly workspaceServer: WorkspaceServer;
|
|
6
6
|
getConfiguration(path: string): Promise<DevContainerConfiguration>;
|
|
7
|
-
getAvailableFiles(): Promise<DevContainerFile[]>;
|
|
7
|
+
getAvailableFiles(workspace: string): Promise<DevContainerFile[]>;
|
|
8
8
|
protected searchForDevontainerJsonFiles(directory: string, depth: number): Promise<string[]>;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=dev-container-file-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-file-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/dev-container-file-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAKhE,qBACa,uBAAuB;IAGhC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAUlE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"dev-container-file-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/dev-container-file-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAKhE,qBACa,uBAAuB;IAGhC,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE9C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAUlE,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;cAUvD,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAgBrG"}
|
|
@@ -31,11 +31,7 @@ let DevContainerFileService = class DevContainerFileService {
|
|
|
31
31
|
configuration.location = path;
|
|
32
32
|
return configuration;
|
|
33
33
|
}
|
|
34
|
-
async getAvailableFiles() {
|
|
35
|
-
const workspace = await this.workspaceServer.getMostRecentlyUsedWorkspace();
|
|
36
|
-
if (!workspace) {
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
34
|
+
async getAvailableFiles(workspace) {
|
|
39
35
|
const devcontainerPath = new core_1.URI(workspace).path.join('.devcontainer').fsPath();
|
|
40
36
|
return (await this.searchForDevontainerJsonFiles(devcontainerPath, 1)).map(file => {
|
|
41
37
|
var _a;
|
|
@@ -46,7 +42,7 @@ let DevContainerFileService = class DevContainerFileService {
|
|
|
46
42
|
});
|
|
47
43
|
}
|
|
48
44
|
async searchForDevontainerJsonFiles(directory, depth) {
|
|
49
|
-
if (depth < 0) {
|
|
45
|
+
if (depth < 0 || !await fs.pathExists(directory)) {
|
|
50
46
|
return [];
|
|
51
47
|
}
|
|
52
48
|
const filesPaths = (await fs.readdir(directory)).map(file => new core_1.Path(directory).join(file).fsPath());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-file-service.js","sourceRoot":"","sources":["../../src/electron-node/dev-container-file-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,wDAA8D;AAG9D,+CAAqC;AACrC,kDAAkD;AAClD,sCAAwC;AAGjC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAKhC,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC/B,MAAM,aAAa,GAA8B,IAAA,oBAAK,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAA8B,CAAC;QACvI,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,sBAAsB,CAAC,CAAC;QACrE,CAAC;QAED,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,iBAAiB
|
|
1
|
+
{"version":3,"file":"dev-container-file-service.js","sourceRoot":"","sources":["../../src/electron-node/dev-container-file-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,wDAA8D;AAG9D,+CAAqC;AACrC,kDAAkD;AAClD,sCAAwC;AAGjC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAKhC,KAAK,CAAC,gBAAgB,CAAC,IAAY;QAC/B,MAAM,aAAa,GAA8B,IAAA,oBAAK,EAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAA8B,CAAC;QACvI,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,sBAAsB,CAAC,CAAC;QACrE,CAAC;QAED,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACrC,MAAM,gBAAgB,GAAG,IAAI,UAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;QAEhF,OAAO,CAAC,MAAM,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;YAAC,OAAA,CAAC;gBAChF,IAAI,EAAE,MAAA,IAAA,oBAAK,EAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,mCAAI,cAAc;gBAClE,IAAI,EAAE,IAAI;aACb,CAAC,CAAA;SAAA,CAAC,CAAC;IAER,CAAC;IAES,KAAK,CAAC,6BAA6B,CAAC,SAAiB,EAAE,KAAa;QAC1E,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAEtG,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC7C,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACzF,CAAC;QACL,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ,CAAA;AAzCY,0DAAuB;AAGb;IADlB,IAAA,kBAAM,EAAC,wBAAe,CAAC;;gEAC4B;kCAH3C,uBAAuB;IADnC,IAAA,sBAAU,GAAE;GACA,uBAAuB,CAyCnC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { URI } from '@theia/core';
|
|
2
|
+
import { WorkspaceHandlerContribution } from '@theia/workspace/lib/node/default-workspace-server';
|
|
3
|
+
export declare class DevContainerWorkspaceHandler implements WorkspaceHandlerContribution {
|
|
4
|
+
canHandle(uri: URI): boolean;
|
|
5
|
+
workspaceStillExists(uri: URI): Promise<boolean>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=dev-container-workspace-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-workspace-handler.d.ts","sourceRoot":"","sources":["../../src/electron-node/dev-container-workspace-handler.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AAGlG,qBACa,4BAA6B,YAAW,4BAA4B;IAE7E,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAItB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;CAIzD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DevContainerWorkspaceHandler = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs = require("@theia/core/shared/fs-extra");
|
|
6
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
7
|
+
const dev_container_workspaces_1 = require("../electron-common/dev-container-workspaces");
|
|
8
|
+
let DevContainerWorkspaceHandler = class DevContainerWorkspaceHandler {
|
|
9
|
+
canHandle(uri) {
|
|
10
|
+
return uri.scheme === dev_container_workspaces_1.DEV_CONTAINER_WORKSPACE_SCHEME;
|
|
11
|
+
}
|
|
12
|
+
async workspaceStillExists(uri) {
|
|
13
|
+
const devcontainerFile = new URLSearchParams(uri.query).get(dev_container_workspaces_1.DEV_CONTAINER_PATH_QUERY);
|
|
14
|
+
return await fs.pathExists(uri.path.fsPath()) && !!devcontainerFile && fs.pathExists(devcontainerFile);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.DevContainerWorkspaceHandler = DevContainerWorkspaceHandler;
|
|
18
|
+
exports.DevContainerWorkspaceHandler = DevContainerWorkspaceHandler = tslib_1.__decorate([
|
|
19
|
+
(0, inversify_1.injectable)()
|
|
20
|
+
], DevContainerWorkspaceHandler);
|
|
21
|
+
//# sourceMappingURL=dev-container-workspace-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-workspace-handler.js","sourceRoot":"","sources":["../../src/electron-node/dev-container-workspace-handler.ts"],"names":[],"mappings":";;;;AAgBA,kDAAkD;AAClD,4DAA0D;AAE1D,0FAAuH;AAGhH,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAErC,SAAS,CAAC,GAAQ;QACd,OAAO,GAAG,CAAC,MAAM,KAAK,yDAA8B,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,GAAQ;QAC/B,MAAM,gBAAgB,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,mDAAwB,CAAC,CAAC;QACtF,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC3G,CAAC;CACJ,CAAA;AAVY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,sBAAU,GAAE;GACA,4BAA4B,CAUxC"}
|
package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-container-creation-contributions.d.ts","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAsB,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAE/H,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAE1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mEAAmE,CAAC;AACjH,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE1F,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAOlF;AAED,qBACa,qBAAsB,YAAW,6BAA6B;IACjE,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,cAAc,EACvG,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"main-container-creation-contributions.d.ts","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAsB,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAE/H,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAE1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mEAAmE,CAAC;AACjH,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE1F,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAOlF;AAED,qBACa,qBAAsB,YAAW,6BAA6B;IACjE,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,cAAc,EACvG,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB3E;AAED,qBACa,sBAAuB,YAAW,6BAA6B;IAClE,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,mBAAmB,EAC5G,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAmC3E;AAED,qBACa,wBAAyB,YAAW,6BAA6B;IAG1E,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;IAElE,iBAAiB,CAAC,eAAe,EAAE,yBAAyB,EAAE,UAAU,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBlI;AAED,qBACa,kBAAmB,YAAW,6BAA6B;IAC9D,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,yBAAyB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnJ,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa;CAQxD;AAED,qBACa,sBAAuB,YAAW,6BAA6B;IAClE,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,eAAe,EAAE,yBAAyB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKtJ;AAED,qBACa,6BAA8B,YAAW,6BAA6B;IACzE,gBAAgB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBxK;AAED,yBAAiB,YAAY,CAAC;IAC1B,UAAiB,QAAQ;QACrB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAED,SAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAExD;CACJ"}
|
package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js
CHANGED
|
@@ -19,10 +19,16 @@ exports.registerContainerCreationContributions = registerContainerCreationContri
|
|
|
19
19
|
let ImageFileContribution = class ImageFileContribution {
|
|
20
20
|
async handleContainerCreation(createOptions, containerConfig, api, outputprovider) {
|
|
21
21
|
if (containerConfig.image) {
|
|
22
|
-
|
|
22
|
+
const platform = process.platform;
|
|
23
|
+
const arch = process.arch;
|
|
24
|
+
const options = platform === 'darwin' && arch === 'arm64' ? { platform: 'amd64' } : {};
|
|
25
|
+
await new Promise((res, rej) => api.pull(containerConfig.image, options, (err, stream) => {
|
|
23
26
|
if (err) {
|
|
24
27
|
rej(err);
|
|
25
28
|
}
|
|
29
|
+
else if (stream === undefined) {
|
|
30
|
+
rej('Stream is undefined');
|
|
31
|
+
}
|
|
26
32
|
else {
|
|
27
33
|
api.modem.followProgress(stream, (error, output) => error ?
|
|
28
34
|
rej(error) :
|
package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-container-creation-contributions.js","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts"],"names":[],"mappings":";;;;AAgBA,4DAA8E;AAC9E,0EAA4E;AAE5E,sCAAmC;AAEnC,kDAAkD;AAClD,uHAAiH;AAGjH,SAAgB,sCAAsC,CAAC,IAAqB;IACxE,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjF,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClF,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpF,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9E,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClF,IAAI,CAAC,wDAA6B,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC7F,CAAC;AAPD,wFAOC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAC9B,KAAK,CAAC,uBAAuB,CAAC,aAA4C,EAAE,eAA+B,EACvG,GAAW,EAAE,cAAuC;QACpD,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"main-container-creation-contributions.js","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ContributionProvider, MaybePromise, URI } from '@theia/core';
|
|
2
2
|
import { WorkspaceServer } from '@theia/workspace/lib/common';
|
|
3
3
|
import * as Docker from 'dockerode';
|
|
4
|
-
import {
|
|
4
|
+
import { ContainerConnectionOptions } from '../electron-common/remote-container-connection-provider';
|
|
5
5
|
import { DevContainerConfiguration } from './devcontainer-file';
|
|
6
6
|
import { DevContainerFileService } from './dev-container-file-service';
|
|
7
7
|
import { ContainerOutputProvider } from '../electron-common/container-output-provider';
|
|
@@ -22,7 +22,7 @@ export declare class DockerContainerService {
|
|
|
22
22
|
protected readonly workspaceServer: WorkspaceServer;
|
|
23
23
|
protected readonly containerCreationContributions: ContributionProvider<ContainerCreationContribution>;
|
|
24
24
|
protected readonly devContainerFileService: DevContainerFileService;
|
|
25
|
-
getOrCreateContainer(docker: Docker,
|
|
25
|
+
getOrCreateContainer(docker: Docker, options: ContainerConnectionOptions, outputProvider?: ContainerOutputProvider): Promise<Docker.Container>;
|
|
26
26
|
postConnect(devcontainerFile: string, connection: RemoteDockerContainerConnection, outputProvider?: ContainerOutputProvider): Promise<void>;
|
|
27
27
|
protected buildContainer(docker: Docker, devcontainerFile: string, workspace: URI, outputProvider?: ContainerOutputProvider): Promise<Docker.Container>;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-container-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"docker-container-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AAEzF,eAAO,MAAM,6BAA6B,eAA2C,CAAC;AAEtF,MAAM,WAAW,6BAA6B;IAC1C,uBAAuB,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EACjE,eAAe,EAAE,yBAAyB,EAC1C,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EACxD,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,iBAAiB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EAAE,UAAU,EAAE,+BAA+B,EACtG,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,qBACa,sBAAsB;IAG/B,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAGvG,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAE9D,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAwB9I,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,+BAA+B,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;cASjI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;CAmChK"}
|
|
@@ -24,12 +24,13 @@ const fs = require("@theia/core/shared/fs-extra");
|
|
|
24
24
|
const dev_container_file_service_1 = require("./dev-container-file-service");
|
|
25
25
|
exports.ContainerCreationContribution = Symbol('ContainerCreationContributions');
|
|
26
26
|
let DockerContainerService = class DockerContainerService {
|
|
27
|
-
async getOrCreateContainer(docker,
|
|
27
|
+
async getOrCreateContainer(docker, options, outputProvider) {
|
|
28
|
+
var _a;
|
|
28
29
|
let container;
|
|
29
|
-
const workspace = new core_1.URI(await this.workspaceServer.getMostRecentlyUsedWorkspace());
|
|
30
|
-
if (lastContainerInfo && fs.statSync(devcontainerFile).mtimeMs < lastContainerInfo.lastUsed) {
|
|
30
|
+
const workspace = new core_1.URI((_a = options.workspaceUri) !== null && _a !== void 0 ? _a : await this.workspaceServer.getMostRecentlyUsedWorkspace());
|
|
31
|
+
if (options.lastContainerInfo && fs.statSync(options.devcontainerFile).mtimeMs < options.lastContainerInfo.lastUsed) {
|
|
31
32
|
try {
|
|
32
|
-
container = docker.getContainer(lastContainerInfo.id);
|
|
33
|
+
container = docker.getContainer(options.lastContainerInfo.id);
|
|
33
34
|
if ((await container.inspect()).State.Running) {
|
|
34
35
|
await container.restart();
|
|
35
36
|
}
|
|
@@ -43,7 +44,7 @@ let DockerContainerService = class DockerContainerService {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
if (!container) {
|
|
46
|
-
container = await this.buildContainer(docker, devcontainerFile, workspace, outputProvider);
|
|
47
|
+
container = await this.buildContainer(docker, options.devcontainerFile, workspace, outputProvider);
|
|
47
48
|
}
|
|
48
49
|
return container;
|
|
49
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-container-service.js","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sCAAsE;AACtE,4DAAyE;AACzE,wDAA8D;AAC9D,kDAAkD;AAIlD,6EAAuE;AAI1D,QAAA,6BAA6B,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAwB/E,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAW/B,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"docker-container-service.js","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export declare class DevContainerConnectionProvider implements RemoteContainerCo
|
|
|
25
25
|
protected outputProvider: ContainerOutputProvider | undefined;
|
|
26
26
|
setClient(client: ContainerOutputProvider): void;
|
|
27
27
|
connectToContainer(options: ContainerConnectionOptions): Promise<ContainerConnectionResult>;
|
|
28
|
-
getDevContainerFiles(): Promise<DevContainerFile[]>;
|
|
28
|
+
getDevContainerFiles(workspacePath: string): Promise<DevContainerFile[]>;
|
|
29
29
|
createContainerConnection(container: Docker.Container, docker: Docker, name?: string): Promise<RemoteDockerContainerConnection>;
|
|
30
30
|
getCurrentContainerInfo(port: number): Promise<Docker.ContainerInspectInfo | undefined>;
|
|
31
31
|
dispose(): void;
|
|
@@ -72,6 +72,7 @@ export declare class RemoteDockerContainerConnection implements RemoteConnection
|
|
|
72
72
|
exec(cmd: string, args?: string[], options?: RemoteExecOptions): Promise<RemoteExecResult>;
|
|
73
73
|
execPartial(cmd: string, tester: RemoteExecTester, args?: string[], options?: RemoteExecOptions): Promise<RemoteExecResult>;
|
|
74
74
|
copy(localPath: string | Buffer | NodeJS.ReadableStream, remotePath: string): Promise<void>;
|
|
75
|
+
disposeSync(): void;
|
|
75
76
|
dispose(): Promise<void>;
|
|
76
77
|
}
|
|
77
78
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":";;;;AAiBA,OAAO,EACH,0BAA0B,EAAE,yBAAyB,EACrD,gBAAgB,EAAE,iCAAiC,EACtD,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,8CAA8C,CAAC;AAC3J,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAgB,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAEvF,qBACa,8BAA+B,YAAW,iCAAiC,EAAE,SAAS,CAAC,uBAAuB,CAAC;IAGxH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAE1D,SAAS,CAAC,cAAc,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAE9D,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAI1C,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAwDjG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ let DevContainerConnectionProvider = class DevContainerConnectionProvider {
|
|
|
44
44
|
text: 'Creating container',
|
|
45
45
|
});
|
|
46
46
|
try {
|
|
47
|
-
const container = await this.containerService.getOrCreateContainer(dockerConnection, options
|
|
47
|
+
const container = await this.containerService.getOrCreateContainer(dockerConnection, options, this.outputProvider);
|
|
48
48
|
const devContainerConfig = await this.devContainerFileService.getConfiguration(options.devcontainerFile);
|
|
49
49
|
// create actual connection
|
|
50
50
|
const report = message => progress.report({ message });
|
|
@@ -82,8 +82,8 @@ let DevContainerConnectionProvider = class DevContainerConnectionProvider {
|
|
|
82
82
|
progress.cancel();
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
getDevContainerFiles() {
|
|
86
|
-
return this.devContainerFileService.getAvailableFiles();
|
|
85
|
+
getDevContainerFiles(workspacePath) {
|
|
86
|
+
return this.devContainerFileService.getAvailableFiles(workspacePath);
|
|
87
87
|
}
|
|
88
88
|
async createContainerConnection(container, docker, name) {
|
|
89
89
|
return Promise.resolve(new RemoteDockerContainerConnection({
|
|
@@ -248,9 +248,12 @@ class RemoteDockerContainerConnection {
|
|
|
248
248
|
});
|
|
249
249
|
return deferred.promise;
|
|
250
250
|
}
|
|
251
|
-
|
|
251
|
+
disposeSync() {
|
|
252
252
|
// cant use dockerrode here since this needs to happen on one tick
|
|
253
|
-
(0, child_process_1.
|
|
253
|
+
(0, child_process_1.execSync)(`docker stop ${this.container.id}`);
|
|
254
|
+
}
|
|
255
|
+
async dispose() {
|
|
256
|
+
return this.container.stop();
|
|
254
257
|
}
|
|
255
258
|
}
|
|
256
259
|
exports.RemoteDockerContainerConnection = RemoteDockerContainerConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-container-connection-provider.js","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAQhF,qGAAmH;AACnH,yGAAoG;AACpG,+GAAyG;AACzG,sCAAsF;AAEtF,4DAAkE;AAClE,oCAAoC;AACpC,yEAAoE;AACpE,sEAA+D;AAE/D,mCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"remote-container-connection-provider.js","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/dev-container",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.0-next.22+35d458a96",
|
|
4
4
|
"description": "Theia - Editor Preview Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
7
|
-
"@theia/output": "1.
|
|
8
|
-
"@theia/remote": "1.
|
|
9
|
-
"@theia/workspace": "1.
|
|
6
|
+
"@theia/core": "1.57.0-next.22+35d458a96",
|
|
7
|
+
"@theia/output": "1.57.0-next.22+35d458a96",
|
|
8
|
+
"@theia/remote": "1.57.0-next.22+35d458a96",
|
|
9
|
+
"@theia/workspace": "1.57.0-next.22+35d458a96",
|
|
10
10
|
"dockerode": "^4.0.2",
|
|
11
11
|
"jsonc-parser": "^2.2.0",
|
|
12
12
|
"uuid": "^8.0.0"
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
"watch": "theiaext watch"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@theia/ext-scripts": "1.
|
|
48
|
+
"@theia/ext-scripts": "1.56.0",
|
|
49
49
|
"@types/dockerode": "^3.3.23"
|
|
50
50
|
},
|
|
51
51
|
"nyc": {
|
|
52
52
|
"extends": "../../configs/nyc.json"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "35d458a961212de264d9579305d984147fa55618"
|
|
55
55
|
}
|
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
18
|
import { AbstractRemoteRegistryContribution, RemoteRegistry } from '@theia/remote/lib/electron-browser/remote-registry-contribution';
|
|
19
|
-
import { LastContainerInfo, RemoteContainerConnectionProvider } from '../electron-common/remote-container-connection-provider';
|
|
19
|
+
import { DevContainerFile, LastContainerInfo, RemoteContainerConnectionProvider } from '../electron-common/remote-container-connection-provider';
|
|
20
20
|
import { RemotePreferences } from '@theia/remote/lib/electron-browser/remote-preferences';
|
|
21
21
|
import { WorkspaceStorageService } from '@theia/workspace/lib/browser/workspace-storage-service';
|
|
22
|
-
import { Command, QuickInputService } from '@theia/core';
|
|
23
|
-
import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
22
|
+
import { Command, MaybePromise, QuickInputService, URI } from '@theia/core';
|
|
23
|
+
import { WorkspaceInput, WorkspaceOpenHandlerContribution, WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
|
|
24
24
|
import { ContainerOutputProvider } from './container-output-provider';
|
|
25
|
+
import { WorkspaceServer } from '@theia/workspace/lib/common';
|
|
26
|
+
import { DEV_CONTAINER_PATH_QUERY, DEV_CONTAINER_WORKSPACE_SCHEME } from '../electron-common/dev-container-workspaces';
|
|
25
27
|
|
|
26
28
|
export namespace RemoteContainerCommands {
|
|
27
29
|
export const REOPEN_IN_CONTAINER = Command.toLocalizedCommand({
|
|
@@ -33,7 +35,7 @@ export namespace RemoteContainerCommands {
|
|
|
33
35
|
|
|
34
36
|
const LAST_USED_CONTAINER = 'lastUsedContainer';
|
|
35
37
|
@injectable()
|
|
36
|
-
export class ContainerConnectionContribution extends AbstractRemoteRegistryContribution {
|
|
38
|
+
export class ContainerConnectionContribution extends AbstractRemoteRegistryContribution implements WorkspaceOpenHandlerContribution {
|
|
37
39
|
|
|
38
40
|
@inject(RemoteContainerConnectionProvider)
|
|
39
41
|
protected readonly connectionProvider: RemoteContainerConnectionProvider;
|
|
@@ -47,6 +49,9 @@ export class ContainerConnectionContribution extends AbstractRemoteRegistryContr
|
|
|
47
49
|
@inject(WorkspaceService)
|
|
48
50
|
protected readonly workspaceService: WorkspaceService;
|
|
49
51
|
|
|
52
|
+
@inject(WorkspaceServer)
|
|
53
|
+
protected readonly workspaceServer: WorkspaceServer;
|
|
54
|
+
|
|
50
55
|
@inject(QuickInputService)
|
|
51
56
|
protected readonly quickInputService: QuickInputService;
|
|
52
57
|
|
|
@@ -59,12 +64,47 @@ export class ContainerConnectionContribution extends AbstractRemoteRegistryContr
|
|
|
59
64
|
});
|
|
60
65
|
}
|
|
61
66
|
|
|
67
|
+
canHandle(uri: URI): MaybePromise<boolean> {
|
|
68
|
+
return uri.scheme === DEV_CONTAINER_WORKSPACE_SCHEME;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async openWorkspace(uri: URI, options?: WorkspaceInput | undefined): Promise<void> {
|
|
72
|
+
const filePath = new URLSearchParams(uri.query).get(DEV_CONTAINER_PATH_QUERY);
|
|
73
|
+
|
|
74
|
+
if (!filePath) {
|
|
75
|
+
throw new Error('No devcontainer file specified for workspace');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const devcontainerFiles = await this.connectionProvider.getDevContainerFiles(uri.path.toString());
|
|
79
|
+
const devcontainerFile = devcontainerFiles.find(file => file.path === filePath);
|
|
80
|
+
|
|
81
|
+
if (!devcontainerFile) {
|
|
82
|
+
throw new Error(`Devcontainer file at ${filePath} not found in workspace`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return this.doOpenInContainer(devcontainerFile, uri.toString());
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async getWorkspaceLabel(uri: URI): Promise<string | undefined> {
|
|
89
|
+
const containerFilePath = new URLSearchParams(uri.query).get(DEV_CONTAINER_PATH_QUERY);
|
|
90
|
+
if (!containerFilePath) {
|
|
91
|
+
return;
|
|
92
|
+
};
|
|
93
|
+
const files = await this.connectionProvider.getDevContainerFiles(uri.path.toString());
|
|
94
|
+
const devcontainerFile = files.find(file => file.path === containerFilePath);
|
|
95
|
+
return `${uri.path.base} [Dev Container: ${devcontainerFile?.name}]`;
|
|
96
|
+
}
|
|
97
|
+
|
|
62
98
|
async openInContainer(): Promise<void> {
|
|
63
99
|
const devcontainerFile = await this.getOrSelectDevcontainerFile();
|
|
64
100
|
if (!devcontainerFile) {
|
|
65
101
|
return;
|
|
66
102
|
}
|
|
67
|
-
|
|
103
|
+
this.doOpenInContainer(devcontainerFile);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async doOpenInContainer(devcontainerFile: DevContainerFile, workspaceUri?: string): Promise<void> {
|
|
107
|
+
const lastContainerInfoKey = `${LAST_USED_CONTAINER}:${devcontainerFile.path}`;
|
|
68
108
|
const lastContainerInfo = await this.workspaceStorageService.getData<LastContainerInfo | undefined>(lastContainerInfoKey);
|
|
69
109
|
|
|
70
110
|
this.containerOutputProvider.openChannel();
|
|
@@ -72,7 +112,8 @@ export class ContainerConnectionContribution extends AbstractRemoteRegistryContr
|
|
|
72
112
|
const connectionResult = await this.connectionProvider.connectToContainer({
|
|
73
113
|
nodeDownloadTemplate: this.remotePreferences['remote.nodeDownloadTemplate'],
|
|
74
114
|
lastContainerInfo,
|
|
75
|
-
devcontainerFile
|
|
115
|
+
devcontainerFile: devcontainerFile.path,
|
|
116
|
+
workspaceUri
|
|
76
117
|
});
|
|
77
118
|
|
|
78
119
|
this.workspaceStorageService.setData<LastContainerInfo>(lastContainerInfoKey, {
|
|
@@ -80,21 +121,28 @@ export class ContainerConnectionContribution extends AbstractRemoteRegistryContr
|
|
|
80
121
|
lastUsed: Date.now()
|
|
81
122
|
});
|
|
82
123
|
|
|
124
|
+
this.workspaceServer.setMostRecentlyUsedWorkspace(
|
|
125
|
+
`${DEV_CONTAINER_WORKSPACE_SCHEME}:${this.workspaceService.workspace?.resource.path}?${DEV_CONTAINER_PATH_QUERY}=${devcontainerFile.path}`);
|
|
126
|
+
|
|
83
127
|
this.openRemote(connectionResult.port, false, connectionResult.workspacePath);
|
|
84
128
|
}
|
|
85
129
|
|
|
86
|
-
async getOrSelectDevcontainerFile(): Promise<
|
|
87
|
-
const
|
|
130
|
+
async getOrSelectDevcontainerFile(): Promise<DevContainerFile | undefined> {
|
|
131
|
+
const workspace = this.workspaceService.workspace;
|
|
132
|
+
if (!workspace) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const devcontainerFiles = await this.connectionProvider.getDevContainerFiles(workspace.resource.path.toString());
|
|
88
136
|
|
|
89
137
|
if (devcontainerFiles.length === 1) {
|
|
90
|
-
return devcontainerFiles[0]
|
|
138
|
+
return devcontainerFiles[0];
|
|
91
139
|
}
|
|
92
140
|
|
|
93
141
|
return (await this.quickInputService.pick(devcontainerFiles.map(file => ({
|
|
94
142
|
type: 'item',
|
|
95
143
|
label: file.name,
|
|
96
144
|
description: file.path,
|
|
97
|
-
file: file
|
|
145
|
+
file: file,
|
|
98
146
|
})), {
|
|
99
147
|
title: 'Select a devcontainer.json file'
|
|
100
148
|
}))?.file;
|
|
@@ -19,6 +19,7 @@ import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
|
19
19
|
import type { ContainerInspectInfo } from 'dockerode';
|
|
20
20
|
import { RemoteContainerConnectionProvider } from '../electron-common/remote-container-connection-provider';
|
|
21
21
|
import { PortForwardingService } from '@theia/remote/lib/electron-browser/port-forwarding/port-forwarding-service';
|
|
22
|
+
import { getCurrentPort } from '@theia/core/lib/electron-browser/messaging/electron-local-ws-connection-source';
|
|
22
23
|
|
|
23
24
|
@injectable()
|
|
24
25
|
export class ContainerInfoContribution implements FrontendApplicationContribution {
|
|
@@ -32,7 +33,7 @@ export class ContainerInfoContribution implements FrontendApplicationContributio
|
|
|
32
33
|
containerInfo: ContainerInspectInfo | undefined;
|
|
33
34
|
|
|
34
35
|
async onStart(): Promise<void> {
|
|
35
|
-
this.containerInfo = await this.connectionProvider.getCurrentContainerInfo(parseInt(
|
|
36
|
+
this.containerInfo = await this.connectionProvider.getCurrentContainerInfo(parseInt(getCurrentPort() ?? '0'));
|
|
36
37
|
|
|
37
38
|
this.portForwardingService.forwardedPorts = Object.entries(this.containerInfo?.NetworkSettings.Ports ?? {}).flatMap(([_, ports]) => (
|
|
38
39
|
ports.map(port => ({
|
|
@@ -21,10 +21,12 @@ import { ServiceConnectionProvider } from '@theia/core/lib/browser/messaging/ser
|
|
|
21
21
|
import { ContainerOutputProvider } from './container-output-provider';
|
|
22
22
|
import { ContainerInfoContribution } from './container-info-contribution';
|
|
23
23
|
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
24
|
+
import { WorkspaceOpenHandlerContribution } from '@theia/workspace/lib/browser/workspace-service';
|
|
24
25
|
|
|
25
26
|
export default new ContainerModule(bind => {
|
|
26
27
|
bind(ContainerConnectionContribution).toSelf().inSingletonScope();
|
|
27
28
|
bind(RemoteRegistryContribution).toService(ContainerConnectionContribution);
|
|
29
|
+
bind(WorkspaceOpenHandlerContribution).toService(ContainerConnectionContribution);
|
|
28
30
|
|
|
29
31
|
bind(ContainerOutputProvider).toSelf().inSingletonScope();
|
|
30
32
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 Typefox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
export const DEV_CONTAINER_WORKSPACE_SCHEME = 'devcontainer';
|
|
18
|
+
export const DEV_CONTAINER_PATH_QUERY = 'containerfile';
|
|
@@ -26,6 +26,7 @@ export interface ContainerConnectionOptions {
|
|
|
26
26
|
nodeDownloadTemplate?: string;
|
|
27
27
|
lastContainerInfo?: LastContainerInfo
|
|
28
28
|
devcontainerFile: string;
|
|
29
|
+
workspaceUri?: string;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export interface LastContainerInfo {
|
|
@@ -46,6 +47,6 @@ export interface DevContainerFile {
|
|
|
46
47
|
|
|
47
48
|
export interface RemoteContainerConnectionProvider extends RpcServer<ContainerOutputProvider> {
|
|
48
49
|
connectToContainer(options: ContainerConnectionOptions): Promise<ContainerConnectionResult>;
|
|
49
|
-
getDevContainerFiles(): Promise<DevContainerFile[]>;
|
|
50
|
+
getDevContainerFiles(workspacePath: string): Promise<DevContainerFile[]>;
|
|
50
51
|
getCurrentContainerInfo(port: number): Promise<ContainerInspectInfo | undefined>;
|
|
51
52
|
}
|
|
@@ -26,6 +26,8 @@ import { ContainerOutputProvider } from '../electron-common/container-output-pro
|
|
|
26
26
|
import { ExtensionsContribution, registerTheiaStartOptionsContributions, SettingsContribution } from './devcontainer-contributions/cli-enhancing-creation-contributions';
|
|
27
27
|
import { RemoteCliContribution } from '@theia/core/lib/node/remote/remote-cli-contribution';
|
|
28
28
|
import { ProfileFileModificationContribution } from './devcontainer-contributions/profile-file-modification-contribution';
|
|
29
|
+
import { DevContainerWorkspaceHandler } from './dev-container-workspace-handler';
|
|
30
|
+
import { WorkspaceHandlerContribution } from '@theia/workspace/lib/node/default-workspace-server';
|
|
29
31
|
|
|
30
32
|
export const remoteConnectionModule = ConnectionContainerModule.create(({ bind, bindBackendService }) => {
|
|
31
33
|
bindContributionProvider(bind, ContainerCreationContribution);
|
|
@@ -55,4 +57,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
|
55
57
|
bind(SettingsContribution).toSelf().inSingletonScope();
|
|
56
58
|
bind(RemoteCliContribution).toService(ExtensionsContribution);
|
|
57
59
|
bind(RemoteCliContribution).toService(SettingsContribution);
|
|
60
|
+
|
|
61
|
+
bind(DevContainerWorkspaceHandler).toSelf().inSingletonScope();
|
|
62
|
+
bind(WorkspaceHandlerContribution).toService(DevContainerWorkspaceHandler);
|
|
58
63
|
});
|
|
@@ -38,12 +38,7 @@ export class DevContainerFileService {
|
|
|
38
38
|
return configuration;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
async getAvailableFiles(): Promise<DevContainerFile[]> {
|
|
42
|
-
const workspace = await this.workspaceServer.getMostRecentlyUsedWorkspace();
|
|
43
|
-
if (!workspace) {
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
|
|
41
|
+
async getAvailableFiles(workspace: string): Promise<DevContainerFile[]> {
|
|
47
42
|
const devcontainerPath = new URI(workspace).path.join('.devcontainer').fsPath();
|
|
48
43
|
|
|
49
44
|
return (await this.searchForDevontainerJsonFiles(devcontainerPath, 1)).map(file => ({
|
|
@@ -54,7 +49,7 @@ export class DevContainerFileService {
|
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
protected async searchForDevontainerJsonFiles(directory: string, depth: number): Promise<string[]> {
|
|
57
|
-
if (depth < 0) {
|
|
52
|
+
if (depth < 0 || !await fs.pathExists(directory)) {
|
|
58
53
|
return [];
|
|
59
54
|
}
|
|
60
55
|
const filesPaths = (await fs.readdir(directory)).map(file => new Path(directory).join(file).fsPath());
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 Typefox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
import { URI } from '@theia/core';
|
|
17
|
+
import * as fs from '@theia/core/shared/fs-extra';
|
|
18
|
+
import { injectable } from '@theia/core/shared/inversify';
|
|
19
|
+
import { WorkspaceHandlerContribution } from '@theia/workspace/lib/node/default-workspace-server';
|
|
20
|
+
import { DEV_CONTAINER_PATH_QUERY, DEV_CONTAINER_WORKSPACE_SCHEME } from '../electron-common/dev-container-workspaces';
|
|
21
|
+
|
|
22
|
+
@injectable()
|
|
23
|
+
export class DevContainerWorkspaceHandler implements WorkspaceHandlerContribution {
|
|
24
|
+
|
|
25
|
+
canHandle(uri: URI): boolean {
|
|
26
|
+
return uri.scheme === DEV_CONTAINER_WORKSPACE_SCHEME;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async workspaceStillExists(uri: URI): Promise<boolean> {
|
|
30
|
+
const devcontainerFile = new URLSearchParams(uri.query).get(DEV_CONTAINER_PATH_QUERY);
|
|
31
|
+
return await fs.pathExists(uri.path.fsPath()) && !!devcontainerFile && fs.pathExists(devcontainerFile);
|
|
32
|
+
}
|
|
33
|
+
}
|
package/src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts
CHANGED
|
@@ -37,9 +37,14 @@ export class ImageFileContribution implements ContainerCreationContribution {
|
|
|
37
37
|
async handleContainerCreation(createOptions: Docker.ContainerCreateOptions, containerConfig: ImageContainer,
|
|
38
38
|
api: Docker, outputprovider: ContainerOutputProvider): Promise<void> {
|
|
39
39
|
if (containerConfig.image) {
|
|
40
|
-
|
|
40
|
+
const platform = process.platform;
|
|
41
|
+
const arch = process.arch;
|
|
42
|
+
const options = platform === 'darwin' && arch === 'arm64' ? { platform: 'amd64' } : {};
|
|
43
|
+
await new Promise<void>((res, rej) => api.pull(containerConfig.image, options, (err, stream) => {
|
|
41
44
|
if (err) {
|
|
42
45
|
rej(err);
|
|
46
|
+
} else if (stream === undefined) {
|
|
47
|
+
rej('Stream is undefined');
|
|
43
48
|
} else {
|
|
44
49
|
api.modem.followProgress(stream, (error, output) => error ?
|
|
45
50
|
rej(error) :
|
|
@@ -19,7 +19,7 @@ import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
|
19
19
|
import { WorkspaceServer } from '@theia/workspace/lib/common';
|
|
20
20
|
import * as fs from '@theia/core/shared/fs-extra';
|
|
21
21
|
import * as Docker from 'dockerode';
|
|
22
|
-
import {
|
|
22
|
+
import { ContainerConnectionOptions } from '../electron-common/remote-container-connection-provider';
|
|
23
23
|
import { DevContainerConfiguration } from './devcontainer-file';
|
|
24
24
|
import { DevContainerFileService } from './dev-container-file-service';
|
|
25
25
|
import { ContainerOutputProvider } from '../electron-common/container-output-provider';
|
|
@@ -60,15 +60,14 @@ export class DockerContainerService {
|
|
|
60
60
|
@inject(DevContainerFileService)
|
|
61
61
|
protected readonly devContainerFileService: DevContainerFileService;
|
|
62
62
|
|
|
63
|
-
async getOrCreateContainer(docker: Docker,
|
|
64
|
-
lastContainerInfo?: LastContainerInfo, outputProvider?: ContainerOutputProvider): Promise<Docker.Container> {
|
|
63
|
+
async getOrCreateContainer(docker: Docker, options: ContainerConnectionOptions, outputProvider?: ContainerOutputProvider): Promise<Docker.Container> {
|
|
65
64
|
let container;
|
|
66
65
|
|
|
67
|
-
const workspace = new URI(await this.workspaceServer.getMostRecentlyUsedWorkspace());
|
|
66
|
+
const workspace = new URI(options.workspaceUri ?? await this.workspaceServer.getMostRecentlyUsedWorkspace());
|
|
68
67
|
|
|
69
|
-
if (lastContainerInfo && fs.statSync(devcontainerFile).mtimeMs < lastContainerInfo.lastUsed) {
|
|
68
|
+
if (options.lastContainerInfo && fs.statSync(options.devcontainerFile).mtimeMs < options.lastContainerInfo.lastUsed) {
|
|
70
69
|
try {
|
|
71
|
-
container = docker.getContainer(lastContainerInfo.id);
|
|
70
|
+
container = docker.getContainer(options.lastContainerInfo.id);
|
|
72
71
|
if ((await container.inspect()).State.Running) {
|
|
73
72
|
await container.restart();
|
|
74
73
|
} else {
|
|
@@ -80,7 +79,7 @@ export class DockerContainerService {
|
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
if (!container) {
|
|
83
|
-
container = await this.buildContainer(docker, devcontainerFile, workspace, outputProvider);
|
|
82
|
+
container = await this.buildContainer(docker, options.devcontainerFile, workspace, outputProvider);
|
|
84
83
|
}
|
|
85
84
|
return container;
|
|
86
85
|
}
|
|
@@ -31,7 +31,7 @@ import { DockerContainerService } from './docker-container-service';
|
|
|
31
31
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
32
32
|
import { WriteStream } from 'tty';
|
|
33
33
|
import { PassThrough } from 'stream';
|
|
34
|
-
import { exec } from 'child_process';
|
|
34
|
+
import { exec, execSync } from 'child_process';
|
|
35
35
|
import { DevContainerFileService } from './dev-container-file-service';
|
|
36
36
|
import { ContainerOutputProvider } from '../electron-common/container-output-provider';
|
|
37
37
|
|
|
@@ -79,7 +79,7 @@ export class DevContainerConnectionProvider implements RemoteContainerConnection
|
|
|
79
79
|
text: 'Creating container',
|
|
80
80
|
});
|
|
81
81
|
try {
|
|
82
|
-
const container = await this.containerService.getOrCreateContainer(dockerConnection, options
|
|
82
|
+
const container = await this.containerService.getOrCreateContainer(dockerConnection, options, this.outputProvider);
|
|
83
83
|
const devContainerConfig = await this.devContainerFileService.getConfiguration(options.devcontainerFile);
|
|
84
84
|
|
|
85
85
|
// create actual connection
|
|
@@ -121,8 +121,8 @@ export class DevContainerConnectionProvider implements RemoteContainerConnection
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
getDevContainerFiles(): Promise<DevContainerFile[]> {
|
|
125
|
-
return this.devContainerFileService.getAvailableFiles();
|
|
124
|
+
getDevContainerFiles(workspacePath: string): Promise<DevContainerFile[]> {
|
|
125
|
+
return this.devContainerFileService.getAvailableFiles(workspacePath);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
async createContainerConnection(container: Docker.Container, docker: Docker, name?: string): Promise<RemoteDockerContainerConnection> {
|
|
@@ -303,9 +303,13 @@ export class RemoteDockerContainerConnection implements RemoteConnection {
|
|
|
303
303
|
return deferred.promise;
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
|
|
306
|
+
disposeSync(): void {
|
|
307
307
|
// cant use dockerrode here since this needs to happen on one tick
|
|
308
|
-
|
|
308
|
+
execSync(`docker stop ${this.container.id}`);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
async dispose(): Promise<void> {
|
|
312
|
+
return this.container.stop();
|
|
309
313
|
}
|
|
310
314
|
|
|
311
315
|
}
|