mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-31 08:03:43 +08:00 
			
		
		
		
	invoke: load defaults from image config
If user does not specify image certain container parameters, we can load them from the exporter metadata. Additionally, we introduce a new "default" value for the --invoke flag, that keeps all of the default parameters (since cobra does not have an easy way of accepting an optional flag argument). Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
		| @@ -326,18 +326,20 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, opts map[string]bu | ||||
| } | ||||
|  | ||||
| func parseInvokeConfig(invoke string) (cfg build.ContainerConfig, err error) { | ||||
| 	cfg.Tty = true | ||||
| 	if invoke == "default" { | ||||
| 		return cfg, nil | ||||
| 	} | ||||
|  | ||||
| 	csvReader := csv.NewReader(strings.NewReader(invoke)) | ||||
| 	fields, err := csvReader.Read() | ||||
| 	if err != nil { | ||||
| 		return cfg, err | ||||
| 	} | ||||
| 	cfg.Tty = true | ||||
| 	if len(fields) == 1 && !strings.Contains(fields[0], "=") { | ||||
| 		cfg.Args = []string{fields[0]} | ||||
| 		cfg.Cmd = []string{fields[0]} | ||||
| 		return cfg, nil | ||||
| 	} | ||||
| 	var entrypoint string | ||||
| 	var args []string | ||||
| 	for _, field := range fields { | ||||
| 		parts := strings.SplitN(field, "=", 2) | ||||
| 		if len(parts) != 2 { | ||||
| @@ -347,15 +349,15 @@ func parseInvokeConfig(invoke string) (cfg build.ContainerConfig, err error) { | ||||
| 		value := parts[1] | ||||
| 		switch key { | ||||
| 		case "args": | ||||
| 			args = append(args, value) // TODO: support JSON | ||||
| 			cfg.Cmd = append(cfg.Cmd, value) // TODO: support JSON | ||||
| 		case "entrypoint": | ||||
| 			entrypoint = value // TODO: support JSON | ||||
| 			cfg.Entrypoint = append(cfg.Entrypoint, value) // TODO: support JSON | ||||
| 		case "env": | ||||
| 			cfg.Env = append(cfg.Env, value) | ||||
| 		case "user": | ||||
| 			cfg.User = value | ||||
| 			cfg.User = &value | ||||
| 		case "cwd": | ||||
| 			cfg.Cwd = value | ||||
| 			cfg.Cwd = &value | ||||
| 		case "tty": | ||||
| 			cfg.Tty, err = strconv.ParseBool(value) | ||||
| 			if err != nil { | ||||
| @@ -365,13 +367,6 @@ func parseInvokeConfig(invoke string) (cfg build.ContainerConfig, err error) { | ||||
| 			return cfg, errors.Errorf("unknown key %q", key) | ||||
| 		} | ||||
| 	} | ||||
| 	cfg.Args = args | ||||
| 	if entrypoint != "" { | ||||
| 		cfg.Args = append([]string{entrypoint}, cfg.Args...) | ||||
| 	} | ||||
| 	if len(cfg.Args) == 0 { | ||||
| 		cfg.Args = []string{"sh"} | ||||
| 	} | ||||
| 	return cfg, nil | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Justin Chadwell
					Justin Chadwell