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  }