mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-09-18 00:39:07 +08:00
Merge pull request #1835 from ktock/long-form-json
This commit is contained in:
@@ -704,6 +704,7 @@ func parseInvokeConfig(invoke string) (cfg invokeConfig, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
csvReader := csv.NewReader(strings.NewReader(invoke))
|
csvReader := csv.NewReader(strings.NewReader(invoke))
|
||||||
|
csvReader.LazyQuotes = true
|
||||||
fields, err := csvReader.Read()
|
fields, err := csvReader.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cfg, err
|
return cfg, err
|
||||||
@@ -723,14 +724,14 @@ func parseInvokeConfig(invoke string) (cfg invokeConfig, err error) {
|
|||||||
value := parts[1]
|
value := parts[1]
|
||||||
switch key {
|
switch key {
|
||||||
case "args":
|
case "args":
|
||||||
cfg.Cmd = append(cfg.Cmd, value) // TODO: support JSON
|
cfg.Cmd = append(cfg.Cmd, maybeJSONArray(value)...)
|
||||||
case "entrypoint":
|
case "entrypoint":
|
||||||
cfg.Entrypoint = append(cfg.Entrypoint, value) // TODO: support JSON
|
cfg.Entrypoint = append(cfg.Entrypoint, maybeJSONArray(value)...)
|
||||||
if cfg.Cmd == nil {
|
if cfg.Cmd == nil {
|
||||||
cfg.Cmd = []string{}
|
cfg.Cmd = []string{}
|
||||||
}
|
}
|
||||||
case "env":
|
case "env":
|
||||||
cfg.Env = append(cfg.Env, value)
|
cfg.Env = append(cfg.Env, maybeJSONArray(value)...)
|
||||||
case "user":
|
case "user":
|
||||||
cfg.User = value
|
cfg.User = value
|
||||||
cfg.NoUser = false
|
cfg.NoUser = false
|
||||||
@@ -749,6 +750,14 @@ func parseInvokeConfig(invoke string) (cfg invokeConfig, err error) {
|
|||||||
return cfg, nil
|
return cfg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func maybeJSONArray(v string) []string {
|
||||||
|
var list []string
|
||||||
|
if err := json.Unmarshal([]byte(v), &list); err == nil {
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
return []string{v}
|
||||||
|
}
|
||||||
|
|
||||||
func listToMap(values []string, defaultEnv bool) map[string]string {
|
func listToMap(values []string, defaultEnv bool) map[string]string {
|
||||||
result := make(map[string]string, len(values))
|
result := make(map[string]string, len(values))
|
||||||
for _, value := range values {
|
for _, value := range values {
|
||||||
|
@@ -49,6 +49,16 @@ bin etc lib mnt proc run srv tmp var
|
|||||||
dev home media opt root sbin sys usr work
|
dev home media opt root sbin sys usr work
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Optional long form allows you specifying detailed configurations of the process.
|
||||||
|
It must be CSV-styled comma-separated key-value pairs.
|
||||||
|
Supported keys are `args` (can be JSON array format), `entrypoint` (can be JSON array format), `env` (can be JSON array format), `user`, `cwd` and `tty` (bool).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker buildx build --invoke 'entrypoint=["sh"],"args=[""-c"", ""env | grep -e FOO -e AAA""]","env=[""FOO=bar"", ""AAA=bbb""]"' .
|
||||||
|
```
|
||||||
|
|
||||||
#### `on-error`
|
#### `on-error`
|
||||||
|
|
||||||
If you want to start a debug session when a build fails, you can use
|
If you want to start a debug session when a build fails, you can use
|
||||||
|
Reference in New Issue
Block a user