You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We use jsonnet to support an infrastructure as code approach to provision resources on GitHub.
For that purpose, a jsonnet file can be created that defines all the resources an organization should have on GitHub using some template functions to define defaults that can be overridden as needed.
Now we also want a way to compare such a user edited configuration with a canonical version to highlight to the user which settings can be omitted (as they are already defined in the template function) and are thus redundant.
However, a simple diff will also outline irrelevant differences, e.g. due to different ordering of object fields or array elements. As a workaround for our relatively simple jsonnet files, we implemented a hacky way to produce a canonical version of such a jsonnet file.
An idea to make this cleaner would be to utilize the existing jsonnetfmt tool and adding an additional AST pass that sorts object fields and array elements according to some criteria, while outputting anything just like always.
The criteria that we came up so far was the following:
keep locals and asserts in objects untouched and stable and make sure they are before any object fields
convert each object field and array element into its string representation by stripping all fodder when sorting them
That approach was working well with our type of jsonnet files, which do not use that many jsonnet features.
The text was updated successfully, but these errors were encountered:
We use jsonnet to support an infrastructure as code approach to provision resources on GitHub.
For that purpose, a jsonnet file can be created that defines all the resources an organization should have on GitHub using some template functions to define defaults that can be overridden as needed.
Here is an example of such a configuration: https://github.com/adoptium/.eclipsefdn/blob/main/otterdog/adoptium.jsonnet
Now we also want a way to compare such a user edited configuration with a canonical version to highlight to the user which settings can be omitted (as they are already defined in the template function) and are thus redundant.
However, a simple diff will also outline irrelevant differences, e.g. due to different ordering of object fields or array elements. As a workaround for our relatively simple jsonnet files, we implemented a hacky way to produce a canonical version of such a jsonnet file.
An idea to make this cleaner would be to utilize the existing jsonnetfmt tool and adding an additional AST pass that sorts object fields and array elements according to some criteria, while outputting anything just like always.
The criteria that we came up so far was the following:
That approach was working well with our type of jsonnet files, which do not use that many jsonnet features.
The text was updated successfully, but these errors were encountered: