github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/store/manifests.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package store 10 11 import ( 12 "crypto/sha256" 13 "fmt" 14 "path/filepath" 15 16 "github.com/vchain-us/vcn/pkg/bundle" 17 ) 18 19 func ManifestFilepath(kind string, target string) (string, error) { 20 target, err := filepath.Abs(target) 21 if err != nil { 22 return "", err 23 } 24 path := filepath.Join(dir, defaultManifestsDir) 25 if err := ensureDir(path); err != nil { 26 return "", err 27 } 28 id := sha256.Sum256([]byte(target)) 29 30 return filepath.Join(path, fmt.Sprintf("%s_%x.json", kind, id)), nil 31 } 32 33 func SaveManifest(kind string, target string, manifest bundle.Manifest) error { 34 path, err := ManifestFilepath(kind, target) 35 if err != nil { 36 return err 37 } 38 return bundle.WriteManifest(manifest, path) 39 } 40 41 func ReadManifest(kind string, target string) (*bundle.Manifest, error) { 42 path, err := ManifestFilepath(kind, target) 43 if err != nil { 44 return nil, err 45 } 46 return bundle.ReadManifest(path) 47 }