troubleshoot icon indicating copy to clipboard operation
troubleshoot copied to clipboard

Is there a better way to give hints about parse/format errors?

Open dexhorthy opened this issue 1 year ago • 2 comments

Describe the rationale for the suggested feature.

Right now, simple YAML errors like missing an indent result in nonexistent analyzer errors.

Screenshot 2024-01-28 at 6 25 37 PM

Describe the feature

I picked up some code and ran support-bundle, only to find that It output nonexistent analyzer

The code in the file is

        - distribution:
          outcomes:
            - pass:
                when: "== kurl"
                message: kurl is a supported platform
            - pass:
                when: "== gke"
                message: GKE is a supported platform

but should be

        - distribution:
            outcomes:
              - pass:
                  when: "== kurl"
                  message: kurl is a supported platform
              - pass:
                  when: "== gke"
                  message: GKE is a supported platform

Proposal: Detect likely format errors To whatever extent we can, which may be "not much", try to hint that this may be a yaml/parse error when the body of an analyzer evaluates to null.

A proposed error message might look like

Could not parse an analyzer at index $N. Please ensure the object key is a valid analyzer type and parameters are indented as children of the analyzer type name. See $DOCS_LINK for more information.

Screenshot 2024-01-28 at 6 21 22 PM

Proposal: Strict format requirements it seems like the YAML parser that consumes the list element evaluates to distribution = nil and then just drops the outcomes block on the floor since it can't be unmarshalled onto any known struct field of type Analyze. Y'all could consider failing or warning whenever unrecognized fields are provided, but this has some backwards-compatibility issues and probably needs some kind of strict-parsing opt-in. For example in the actual failed analyzer UI, could show something like

Parse error at index $N (or line: $N) -- one or more unknown object fields will be ignored: [outcomes].

Describe alternatives you've considered

I suppose I could make fewer yaml mistakes 😅

Additional context

dexhorthy avatar Jan 29 '24 00:01 dexhorthy

I believe this is related to https://github.com/replicatedhq/troubleshoot/issues/1312

banjoh avatar Apr 22 '24 17:04 banjoh