package version import ( "encoding/json" "io/ioutil" "os" "path/filepath" "train/pkg/paths" ) type VersionInfo struct { Package string `json:"package"` Version string `json:"version"` } var versionDir = filepath.Join(paths.BaseDir(), "versions") func SaveVersionInfo(pkgName, ver string) error { if err := os.MkdirAll(versionDir, os.ModePerm); err != nil { return err } info := VersionInfo{Package: pkgName, Version: ver} data, err := json.MarshalIndent(info, "", " ") if err != nil { return err } filePath := filepath.Join(versionDir, pkgName+".json") return ioutil.WriteFile(filePath, data, 0644) } func GetVersionInfo(pkgName string) (*VersionInfo, error) { filePath := filepath.Join(versionDir, pkgName+".json") data, err := ioutil.ReadFile(filePath) if err != nil { return nil, err } var info VersionInfo if err := json.Unmarshal(data, &info); err != nil { return nil, err } return &info, nil }