package zrokdir import ( "encoding/json" "github.com/openziti/zrok/tui" "github.com/pkg/errors" "os" "path/filepath" ) const V = "v0.3" type Metadata struct { V string `json:"v"` } func checkMetadata() error { mf, err := metadataFile() if err != nil { return err } data, err := os.ReadFile(mf) if err != nil { tui.Warning("unable to open zrokdir metadata; ignoring\n") return nil } m := &Metadata{} if err := json.Unmarshal(data, m); err != nil { return errors.Wrapf(err, "error unmarshaling metadata file '%v'", mf) } if m.V != V { return errors.Errorf("invalid zrokdir metadata version '%v'", m.V) } return nil } func writeMetadata() error { mf, err := metadataFile() if err != nil { return err } data, err := json.Marshal(&Metadata{V: V}) if err != nil { return err } if err := os.MkdirAll(filepath.Dir(mf), os.FileMode(0700)); err != nil { return err } if err := os.WriteFile(mf, data, os.FileMode(0600)); err != nil { return err } return nil }