utils/infinitecraft/write.go

35 lines
652 B
Go

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([]Instance, 0)
}
enc := json.NewEncoder(gz)
err = enc.Encode(g)
return
}