cue-lang / cue

The home of the CUE language! Validate and define text-based and dynamic configuration
https://cuelang.org
Apache License 2.0
4.98k stars 282 forks source link

Keys not aligned for single-line structs #675

Open cueckoo opened 3 years ago

cueckoo commented 3 years ago

Originally opened by @svend in https://github.com/cuelang/cue/issues/675

What version of CUE are you using (cue version)?

$ cue version 0.3.0-beta.3 darwin/amd64

Does this issue reproduce with the latest release?

Also tested with master at 9c5489fc66edf789372390847d4c3e10f047a005.

What did you do?

$ cat > fmt-input.cue <<EOF
parameters: [
{name: "deploy.app", value: "app", forceString: true},
{name: "app", value: "app", forceString: true},
{name: "deploy.context", value: "cluster", forceString: true},
{name: "context", value: "cluster", forceString: true},
{name: "region", value: "region", forceString: true},
{name: "deploy.env", value: "env", forceString: true},
{name: "env", value: "env", forceString: true},
{name: "deploy.track", value: "track", forceString: true},
{name: "track", value: "track", forceString: true},
]
EOF
$ cue fmt fmt-input.cue
$ cat fmt-input.cue

What did you expect to see?

Single-line struct field names aligned.

parameters: [
    {name: "deploy.app",     value: "app",     forceString: true},
    {name: "app",            value: "app",     forceString: true},
    {name: "deploy.context", value: "cluster", forceString: true},
    {name: "context",        value: "cluster", forceString: true},
    {name: "region",         value: "region",  forceString: true},
    {name: "deploy.env",     value: "env",     forceString: true},
    {name: "env",            value: "env",     forceString: true},
    {name: "deploy.track",   value: "track",   forceString: true},
    {name: "track",          value: "track",   forceString: true},
]

What did you see instead?

The field values are aligned, but the field keys are not. This formatting is a little hard to read to me.

parameters: [
    {name: "deploy.app", value:     "app", forceString:     true},
    {name: "app", value:            "app", forceString:     true},
    {name: "deploy.context", value: "cluster", forceString: true},
    {name: "context", value:        "cluster", forceString: true},
    {name: "region", value:         "region", forceString:  true},
    {name: "deploy.env", value:     "env", forceString:     true},
    {name: "env", value:            "env", forceString:     true},
    {name: "deploy.track", value:   "track", forceString:   true},
    {name: "track", value:          "track", forceString:   true},
]
cueckoo commented 3 years ago

Original reply by @svend in https://github.com/cuelang/cue/issues/675#issuecomment-766975537

Thinking about this more, the expected output I had only makes sense if the keys are the same length. I'm not sure if it would be desirable to align both the keys and values, of if that would result in lines that are too long.