Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
marshal: correctly handle empty shell commands
It's possible to override an image's entrypoint for service container's by setting `service.entrypoint`. (Same applies for image's command.) In some circumstances, it's desirable to explicitly "clear" these out from the image. However, currently, if you do specify `entrypoint: ''` or `entrypoint: []`, when the config is marshaled, that gets lost because of Go default value handling. Handling this varies slightly between YAML + JSON: * YAML: implement `IsZeroer` interface to specify that only `nil` slices should be omittable & `MarshalYAML` to ensure that `nil` slices marshal as `null` rather than `[]` * JSON: do NOT use `omitempty`, meaning that the result will _always_ be present in the marshaled output, unfortunately, but it will be correct! This preserves compatibility and "pretty" serialization for YAML at the expense of some slightly subtle marshalling semantics. Signed-off-by: Milas Bowman <milas.bowman@docker.com>
- Loading branch information