@@ -9,7 +9,7 @@ import yargs, { Argv } from 'yargs';
9
9
import * as jsonc from 'jsonc-parser' ;
10
10
11
11
import { createDockerParams , createLog , experimentalImageMetadataDefault , launch , ProvisionOptions } from './devContainers' ;
12
- import { SubstitutedConfig , createContainerProperties , createFeaturesTempFolder , envListToObj , inspectDockerImage , isDockerFileConfig , SubstituteConfig } from './utils' ;
12
+ import { SubstitutedConfig , createContainerProperties , createFeaturesTempFolder , envListToObj , inspectDockerImage , isDockerFileConfig , SubstituteConfig , addSubstitution } from './utils' ;
13
13
import { URI } from 'vscode-uri' ;
14
14
import { ContainerError } from '../spec-common/errors' ;
15
15
import { Log , LogLevel , makeLog , mapLogLevel } from '../spec-utils/log' ;
@@ -30,7 +30,7 @@ import { featuresTestOptions, featuresTestHandler } from './featuresCLI/test';
30
30
import { featuresPackageHandler , featuresPackageOptions } from './featuresCLI/package' ;
31
31
import { featuresPublishHandler , featuresPublishOptions } from './featuresCLI/publish' ;
32
32
import { featuresInfoHandler , featuresInfoOptions } from './featuresCLI/info' ;
33
- import { containerSubstitute } from '../spec-common/variableSubstitution' ;
33
+ import { beforeContainerSubstitute , containerSubstitute } from '../spec-common/variableSubstitution' ;
34
34
import { getPackageConfig , PackageConfiguration } from '../spec-utils/product' ;
35
35
import { getDevcontainerMetadata , getImageBuildInfo , getImageMetadataFromContainer , ImageMetadataEntry , mergeConfiguration , MergedDevContainerConfig } from './imageMetadata' ;
36
36
import { templatesPublishHandler , templatesPublishOptions } from './templatesCLI/publish' ;
@@ -214,7 +214,7 @@ async function provision({
214
214
} ;
215
215
} ) : [ ] ,
216
216
updateRemoteUserUIDDefault,
217
- remoteEnv : keyValuesToRecord ( addRemoteEnvs ) ,
217
+ remoteEnv : envListToObj ( addRemoteEnvs ) ,
218
218
additionalCacheFroms : addCacheFroms ,
219
219
useBuildKit : buildkit ,
220
220
buildxPlatform : undefined ,
@@ -597,7 +597,7 @@ async function doRunUserCommands({
597
597
persistedFolder,
598
598
additionalMounts : [ ] ,
599
599
updateRemoteUserUIDDefault : 'never' ,
600
- remoteEnv : keyValuesToRecord ( addRemoteEnvs ) ,
600
+ remoteEnv : envListToObj ( addRemoteEnvs ) ,
601
601
additionalCacheFroms : [ ] ,
602
602
useBuildKit : 'auto' ,
603
603
buildxPlatform : undefined ,
@@ -759,13 +759,8 @@ async function readConfiguration({
759
759
} ;
760
760
const container = containerId ? await inspectContainer ( params , containerId ) : await findDevContainer ( params , idLabels ) ;
761
761
if ( container ) {
762
- const substitute1 = configuration . substitute ;
763
- const substitute2 : SubstituteConfig = config => containerSubstitute ( cliHost . platform , configuration . config . configFilePath , envListToObj ( container . Config . Env ) , config ) ;
764
- configuration = {
765
- config : substitute2 ( configuration . config ) ,
766
- raw : configuration . raw ,
767
- substitute : config => substitute2 ( substitute1 ( config ) ) ,
768
- } ;
762
+ configuration = addSubstitution ( configuration , config => beforeContainerSubstitute ( envListToObj ( idLabels ) , config ) ) ;
763
+ configuration = addSubstitution ( configuration , config => containerSubstitute ( cliHost . platform , configuration . config . configFilePath , envListToObj ( container . Config . Env ) , config ) ) ;
769
764
}
770
765
771
766
const additionalFeatures = additionalFeaturesJson ? jsonc . parse ( additionalFeaturesJson ) as Record < string , string | boolean | Record < string , string | boolean > > : { } ;
@@ -927,7 +922,7 @@ export async function doExec({
927
922
persistedFolder,
928
923
additionalMounts : [ ] ,
929
924
updateRemoteUserUIDDefault : 'never' ,
930
- remoteEnv : keyValuesToRecord ( addRemoteEnvs ) ,
925
+ remoteEnv : envListToObj ( addRemoteEnvs ) ,
931
926
additionalCacheFroms : [ ] ,
932
927
useBuildKit : 'auto' ,
933
928
omitLoggerHeader : true ,
@@ -989,16 +984,6 @@ export async function doExec({
989
984
}
990
985
}
991
986
992
- function keyValuesToRecord ( keyValues : string [ ] ) : Record < string , string > {
993
- return keyValues . reduce ( ( envs , env ) => {
994
- const i = env . indexOf ( '=' ) ;
995
- if ( i !== - 1 ) {
996
- envs [ env . substring ( 0 , i ) ] = env . substring ( i + 1 ) ;
997
- }
998
- return envs ;
999
- } , { } as Record < string , string > ) ;
1000
- }
1001
-
1002
987
function getDefaultIdLabels ( workspaceFolder : string ) {
1003
988
return [ `${ hostFolderLabel } =${ workspaceFolder } ` ] ;
1004
989
}
0 commit comments