The apimachinery code path, in its final marshalling
for output, calls Marshall
https://github.com/go-yaml/yaml/blob/v2/yaml.go#L199
This code path (via apimachinery Unstructured types)
has no JSON schema tags
https://yaml.org/spec/1.2/spec.html#id2803311
so it adds quotes to values that smell like
booleans and ints (e.g. `false` becomes `"false"`).
The kyaml code path, OTOH, uses such tags,
so generally does not quote ints and booleans.
This PR isolates this difference in behavior to
one set of tests (using data fields in configmaps
in api/krusty/configmaps_test.go) so that
they don't confuse other tests that cover
completely different behaviors.
This PR
- defines a patch conflict detector interface,
- extracts implementations of the interface from the
merginator code, making the merginator code
independent of --enable_kyaml.
- injects those implementations into kustomize
as a function of --enable_kyaml.
So, instead of using different merginators to combine
resmaps, this pr allows the use of a single patch merge
code path that uses different conflict detectors.
So instead of debating how to merge, we're now only
considering whether to warn on conflict detection
in one transformer.
This PR is in service of #3304, eliminating seven
instances where --enable_kyaml was consulted. These
were cases where conflict detection wasn't an issue
(but merging patches was).