Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

marshal: correctly handle empty shell commands #298

Merged
merged 1 commit into from Aug 9, 2022

Commits on Aug 2, 2022

  1. 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>
    milas committed Aug 2, 2022
    Copy the full SHA
    666827d View commit details
    Browse the repository at this point in the history