github.com/SupersunnySea/draft@v0.16.0/pkg/draft/pack/create.go (about)

     1  package pack
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	"github.com/Azure/draft/pkg/draft/pack/repo"
     9  )
    10  
    11  // CreateFrom scaffolds a directory with the src pack
    12  func CreateFrom(dest, src string, appName string) error {
    13  	// first do some validation that we are copying from a valid pack directory
    14  	pack, err := FromDir(src)
    15  	if err != nil {
    16  		return fmt.Errorf("could not load pack: %s\nTry running:\n\t$ draft pack-repo update", err)
    17  	}
    18  
    19  	// Update ChartName if appName is non-empty
    20  	if appName != "" {
    21  		pack.Chart.Metadata.Name = appName
    22  	} else {
    23  		cwd, err := os.Getwd()
    24  		if err == nil {
    25  			pack.Chart.Metadata.Name = filepath.Base(cwd)
    26  		}
    27  	}
    28  	return pack.SaveDir(dest)
    29  }
    30  
    31  // Find loops through each pack repo in packsDir to find pack with given name
    32  func Find(packsDir, name string) ([]string, error) {
    33  	packs := []string{}
    34  	for _, r := range repo.FindRepositories(packsDir) {
    35  		pack, err := r.Pack(name)
    36  		if err != nil && err != repo.ErrPackNotFoundInRepo {
    37  			return packs, err
    38  		}
    39  		if pack != "" {
    40  			packs = append(packs, pack)
    41  		}
    42  	}
    43  
    44  	return packs, nil
    45  }