in ci-tools/main.go [186:241]
func registerWebAssemblyVersion(version string) error {
wasmVersionsFilePath := lookupWasmVersionsJSONPath()
wasmVersionsFile, err := os.OpenFile(wasmVersionsFilePath, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
return err
}
wasmVersionsFileBytes, err := io.ReadAll(wasmVersionsFile)
if err != nil {
return err
}
_ = wasmVersionsFile.Close()
var wasmVersions map[string]any
if len(wasmVersionsFileBytes) == 0 {
wasmVersions = map[string]any{}
} else {
err = json.Unmarshal(wasmVersionsFileBytes, &wasmVersions)
if err != nil {
return err
}
}
if len(wasmVersions) == 0 {
wasmVersions["versions"] = []any{}
}
for _, v := range wasmVersions["versions"].([]any) {
if v.(map[string]any)["version"].(string) == version {
return nil
}
}
wasmName := fmt.Sprintf("wasm/ottlplayground-%s.wasm", version)
wasmVersions["versions"] = append(wasmVersions["versions"].([]any), map[string]any{
"artifact": wasmName,
"version": version,
})
slices.SortFunc(wasmVersions["versions"].([]any), func(a, b any) int {
return semver.Compare(b.(map[string]any)["version"].(string), a.(map[string]any)["version"].(string))
})
modifiedWasmVersions, err := json.MarshalIndent(&wasmVersions, "", " ")
if err != nil {
return err
}
err = os.WriteFile(wasmVersionsFilePath, modifiedWasmVersions, 0600)
if err != nil {
return err
}
return nil
}