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 }