43 lines
937 B
Go
43 lines
937 B
Go
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
|
|
} |