@@ -620,25 +620,29 @@ export class Commands{
620620 *
621621 * Throw if not logged into a deployment.
622622 */
623- public async openDevContainer ( ...args : string [ ] ) : Promise < void > {
623+ public async openDevContainer (
624+ workspaceOwner : string ,
625+ workspaceName : string ,
626+ workspaceAgent : string ,
627+ devContainerName : string ,
628+ devContainerFolder : string ,
629+ localWorkspaceFolder : string = "" ,
630+ localConfigFile : string = "" ,
631+ ) : Promise < void > {
624632const baseUrl = this . restClient . getAxiosInstance ( ) . defaults . baseURL ;
625633if ( ! baseUrl ) {
626634throw new Error ( "You are not logged in" ) ;
627635}
628636
629- const workspaceOwner = args [ 0 ] as string ;
630- const workspaceName = args [ 1 ] as string ;
631- const workspaceAgent = args [ 2 ] as string ;
632- const devContainerName = args [ 3 ] as string ;
633- const devContainerFolder = args [ 4 ] as string ;
634-
635637await openDevContainer (
636638baseUrl ,
637639workspaceOwner ,
638640workspaceName ,
639641workspaceAgent ,
640642devContainerName ,
641643devContainerFolder ,
644+ localWorkspaceFolder ,
645+ localConfigFile ,
642646) ;
643647}
644648
@@ -751,6 +755,8 @@ async function openDevContainer(
751755workspaceAgent : string ,
752756devContainerName : string ,
753757devContainerFolder : string ,
758+ localWorkspaceFolder : string = "" ,
759+ localConfigFile : string = "" ,
754760) {
755761const remoteAuthority = toRemoteAuthority (
756762baseUrl ,
@@ -759,11 +765,26 @@ async function openDevContainer(
759765workspaceAgent ,
760766) ;
761767
768+ const hostPath = localWorkspaceFolder ? localWorkspaceFolder : undefined ;
769+ const configFile =
770+ hostPath && localConfigFile
771+ ? {
772+ path : localConfigFile ,
773+ scheme : "vscode-fileHost" ,
774+ }
775+ : undefined ;
762776const devContainer = Buffer . from (
763- JSON . stringify ( { containerName : devContainerName } ) ,
777+ JSON . stringify ( {
778+ containerName : devContainerName ,
779+ hostPath,
780+ configFile,
781+ localDocker : false ,
782+ } ) ,
764783"utf-8" ,
765784) . toString ( "hex" ) ;
766- const devContainerAuthority = `attached-container+${ devContainer } @${ remoteAuthority } ` ;
785+
786+ const type = localWorkspaceFolder ? "dev-container" : "attached-container" ;
787+ const devContainerAuthority = `${ type } +${ devContainer } @${ remoteAuthority } ` ;
767788
768789let newWindow = true ;
769790if ( ! vscode . workspace . workspaceFolders ?. length ) {
0 commit comments