utils/infinitecraft/write.go

36 lines
647 B
Go
Raw Normal View History

2025-05-02 15:16:04 -05:00
package infinitecraft
import (
"compress/gzip"
"context"
"encoding/json"
"fmt"
"os"
"time"
)
func (m *Merger) Write(ctx context.Context, g Game) (out string, err error) {
base := fmt.Sprintf("%s - %s", time.Now().Local().Format("2006-01-02T15_04_05"), g.Name)
out = base + ".ic"
var f *os.File
if f, err = os.Create(out); err != nil {
return
}
defer f.Close()
gz := gzip.NewWriter(f)
defer gz.Close()
gz.Name = base
gz.ModTime = time.Unix(g.Updated/1000, g.Updated%1000)
gz.Comment = "merge by ic-merge"
if g.Instances == nil {
g.Instances = make([]any, 0)
}
enc := json.NewEncoder(gz)
err = enc.Encode(g)
return
}