@@ -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 > {
624632 const baseUrl = this . restClient . getAxiosInstance ( ) . defaults . baseURL ;
625633 if ( ! baseUrl ) {
626634 throw 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-
635637 await openDevContainer (
636638 baseUrl ,
637639 workspaceOwner ,
638640 workspaceName ,
639641 workspaceAgent ,
640642 devContainerName ,
641643 devContainerFolder ,
644+ localWorkspaceFolder ,
645+ localConfigFile ,
642646 ) ;
643647 }
644648
@@ -751,6 +755,8 @@ async function openDevContainer(
751755 workspaceAgent : string ,
752756 devContainerName : string ,
753757 devContainerFolder : string ,
758+ localWorkspaceFolder : string = "" ,
759+ localConfigFile : string = "" ,
754760) {
755761 const remoteAuthority = toRemoteAuthority (
756762 baseUrl ,
@@ -759,11 +765,26 @@ async function openDevContainer(
759765 workspaceAgent ,
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 ;
762776 const 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
768789 let newWindow = true ;
769790 if ( ! vscode . workspace . workspaceFolders ?. length ) {
0 commit comments