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  }