github.com/oNaiPs/go-generate-fast@v0.3.0/src/core/cache/config.go (about) 1 package cache 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 "path" 8 "time" 9 ) 10 11 type CacheConfigOutputFileInfo struct { 12 Hash string 13 Path string 14 ModTime time.Time 15 } 16 17 type CacheConfig struct { 18 OutputFiles []CacheConfigOutputFileInfo 19 } 20 21 func GetConfigFilePath(cacheHitDir string) string { 22 return path.Join(cacheHitDir, "cache.json") 23 } 24 25 func SaveConfig(config CacheConfig, cacheHitDir string) error { 26 file, err := os.Create(GetConfigFilePath(cacheHitDir)) 27 if err != nil { 28 return fmt.Errorf("cannot create cache config file: %w", err) 29 } 30 defer file.Close() 31 32 jsonData, err := json.Marshal(config) 33 if err != nil { 34 return fmt.Errorf("cannot marshal cache config file: %w", err) 35 } 36 37 _, err = file.Write(jsonData) 38 if err != nil { 39 return fmt.Errorf("cannot write cache config file: %w", err) 40 } 41 return nil 42 } 43 44 func LoadConfig(cacheHitDir string) (CacheConfig, error) { 45 var config CacheConfig 46 47 fileData, err := os.ReadFile(GetConfigFilePath(cacheHitDir)) 48 if err != nil { 49 return CacheConfig{}, fmt.Errorf("cannot read cache config file: %w", err) 50 } 51 52 // Unmarshal JSON data to struct 53 err = json.Unmarshal(fileData, &config) 54 if err != nil { 55 return CacheConfig{}, fmt.Errorf("cannot unmarshal cache config file: %w", err) 56 } 57 58 return config, nil 59 }