Publish curated ITWorx_MCP_Hub source from 55011066f84f073ceabb35c99ddd5b65745e34f6

This commit is contained in:
Public Source Publisher committed 2026-10-14 07:15:12 +00:00
1 parent 020282a4b5
commit b35324a665
6 files changed
+653 -11

No files matched your search

+102
View File
@@ -0,0 +1,102 @@
// Reference-only Moby saveConfig/CreateID oracle. The generator supplies the
// source-pinned Config/V1Image declarations; this never imports Hub code.
package main
import (
"crypto/sha256"
"encoding/base64"
"encoding/json"
"fmt"
"os"
"reflect"
)
type blob struct {
Name string `json:"name"`
Payload string `json:"payloadBase64"`
}
type result struct {
Dialect string `json:"dialect"`
Config json.RawMessage `json:"config"`
Blobs []blob `json:"blobs"`
}
func sum(data []byte) string { return fmt.Sprintf("%x", sha256.Sum256(data)) }
func encoded(value any) []byte {
data, err := json.Marshal(value)
if err != nil {
panic(err)
}
return data
}
func derive[T any](dialect string, raw json.RawMessage) result {
var image struct {
RootFS struct {
DiffIDs []string `json:"diff_ids"`
} `json:"rootfs"`
}
if err := json.Unmarshal(raw, &image); err != nil {
panic(err)
}
// Image.Parent shadows V1Image.Parent in Moby; these golden inputs do not
// depend on an old builder's parent field.
var original T
if err := json.Unmarshal(raw, &original); err != nil {
panic(err)
}
chain, parent := "", ""
output := result{Dialect: dialect, Config: raw, Blobs: []blob{}}
for index, diff := range image.RootFS.DiffIDs {
if chain == "" {
chain = diff
} else {
chain = "sha256:" + sum([]byte(chain+" "+diff))
}
var legacy T
if index == len(image.RootFS.DiffIDs)-1 {
legacy = original
} else {
if err := json.Unmarshal([]byte(`{"created":"1970-01-01T00:00:00Z"}`), &legacy); err != nil {
panic(err)
}
}
reflected := reflect.ValueOf(&legacy).Elem()
reflected.FieldByName("ID").SetString("")
var preimage map[string]json.RawMessage
if err := json.Unmarshal(encoded(legacy), &preimage); err != nil {
panic(err)
}
preimage["layer_id"] = encoded(chain)
if parent != "" {
preimage["parent"] = encoded("sha256:" + parent)
}
identity := sum(encoded(preimage))
reflected.FieldByName("ID").SetString(identity)
if parent != "" {
reflected.FieldByName("Parent").SetString(parent)
}
reflected.FieldByName("OS").SetString("linux")
payload := encoded(legacy)
output.Blobs = append(output.Blobs, blob{
Name: "blobs/sha256/" + sum(payload), Payload: base64.StdEncoding.EncodeToString(payload),
})
parent = identity
}
return output
}
func main() {
data, err := os.ReadFile(os.Args[1])
if err != nil {
panic(err)
}
var inputs []json.RawMessage
if err := json.Unmarshal(data, &inputs); err != nil {
panic(err)
}
outputs := []result{}
for _, input := range inputs {
outputs = append(outputs, derive[OldV1]("onbuild_null", input))
outputs = append(outputs, derive[NewV1]("onbuild_omitempty", input))
}
fmt.Println(string(encoded(outputs)))
}