mirror of
				https://github.com/docker/compose.git
				synced 2025-10-24 16:53:52 +02:00 
			
		
		
		
	Merge pull request #1628 from ulyssessouza/add-bypass-envvar
Support bypass envvars
This commit is contained in:
		
						commit
						db6978aa57
					
				| @ -247,22 +247,6 @@ func (e Event) String() string { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| // EnvironmentMap return RunOptions.Environment as a MappingWithEquals | ||||
| func (opts *RunOptions) EnvironmentMap() types.MappingWithEquals { | ||||
| 	environment := types.MappingWithEquals{} | ||||
| 	for _, s := range opts.Environment { | ||||
| 		parts := strings.SplitN(s, "=", 2) | ||||
| 		key := parts[0] | ||||
| 		switch { | ||||
| 		case len(parts) == 1: | ||||
| 			environment[key] = nil | ||||
| 		default: | ||||
| 			environment[key] = &parts[1] | ||||
| 		} | ||||
| 	} | ||||
| 	return environment | ||||
| } | ||||
| 
 | ||||
| // ListOptions group options of the ls API | ||||
| type ListOptions struct { | ||||
| 	All bool | ||||
|  | ||||
| @ -19,6 +19,7 @@ package compose | ||||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/compose-spec/compose-go/types" | ||||
| 	"gotest.tools/v3/assert" | ||||
| ) | ||||
| 
 | ||||
| @ -30,7 +31,7 @@ func TestRunOptionsEnvironmentMap(t *testing.T) { | ||||
| 			"QIX", | ||||
| 		}, | ||||
| 	} | ||||
| 	env := opts.EnvironmentMap() | ||||
| 	env := types.NewMappingWithEquals(opts.Environment) | ||||
| 	assert.Equal(t, *env["FOO"], "BAR") | ||||
| 	assert.Equal(t, *env["ZOT"], "") | ||||
| 	assert.Check(t, env["QIX"] == nil) | ||||
|  | ||||
| @ -42,7 +42,7 @@ func (s *composeService) RunOneOffContainer(ctx context.Context, project *types. | ||||
| 		return 0, err | ||||
| 	} | ||||
| 
 | ||||
| 	applyRunOptions(&service, opts) | ||||
| 	applyRunOptions(project, &service, opts) | ||||
| 
 | ||||
| 	slug := moby.GenerateRandomID() | ||||
| 	if service.ContainerName == "" { | ||||
| @ -107,7 +107,7 @@ func (s *composeService) RunOneOffContainer(ctx context.Context, project *types. | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func applyRunOptions(service *types.ServiceConfig, opts compose.RunOptions) { | ||||
| func applyRunOptions(project *types.Project, service *types.ServiceConfig, opts compose.RunOptions) { | ||||
| 	service.Tty = opts.Tty | ||||
| 	service.ContainerName = opts.Name | ||||
| 
 | ||||
| @ -124,7 +124,12 @@ func applyRunOptions(service *types.ServiceConfig, opts compose.RunOptions) { | ||||
| 		service.Entrypoint = opts.Entrypoint | ||||
| 	} | ||||
| 	if len(opts.Environment) > 0 { | ||||
| 		service.Environment.OverrideBy(opts.EnvironmentMap()) | ||||
| 		env := types.NewMappingWithEquals(opts.Environment) | ||||
| 		projectEnv := env.Resolve(func(s string) (string, bool) { | ||||
| 			v, ok := project.Environment[s] | ||||
| 			return v, ok | ||||
| 		}).RemoveEmpty() | ||||
| 		service.Environment.OverrideBy(projectEnv) | ||||
| 	} | ||||
| 	for k, v := range opts.Labels { | ||||
| 		service.Labels.Add(k, v) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user