(path string, value any)
| 94 | } |
| 95 | |
| 96 | func writeJSONAtomic(path string, value any) error { |
| 97 | data, err := json.MarshalIndent(value, "", " ") |
| 98 | if err != nil { |
| 99 | return err |
| 100 | } |
| 101 | tmpPath := path + ".tmp" |
| 102 | if err := os.WriteFile(tmpPath, data, 0644); err != nil { |
| 103 | return err |
| 104 | } |
| 105 | return os.Rename(tmpPath, path) |
| 106 | } |
| 107 | |
| 108 | func appendMetrics(root string, artifact *Artifact) error { |
| 109 | entry := struct { |