github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/lib/codefile/write.go (about) 1 package codefile 2 3 import ( 4 "io/fs" 5 "os" 6 "path" 7 "path/filepath" 8 "strings" 9 10 "github.com/taubyte/tau-cli/common" 11 ) 12 13 func (p CodePath) Write(templateURL, nameForMd string) error { 14 templateURL = filepath.ToSlash(templateURL) 15 16 err := os.MkdirAll(p.String(), common.DefaultDirPermission) 17 if err != nil { 18 return err 19 } 20 21 toWrite := make(map[string][]byte) 22 if len(templateURL) > 0 { 23 var err0 error 24 err := filepath.WalkDir(templateURL, func(path string, d fs.DirEntry, err error) error { 25 if d.Name() != "config.yaml" && !d.IsDir() { 26 toWrite[d.Name()], err0 = os.ReadFile(path) 27 if err0 != nil { 28 return err0 29 } 30 } 31 return nil 32 }) 33 if err != nil { 34 return err 35 } 36 37 split := strings.Split(templateURL, "/") 38 templateCommon := getTemplateCommon(split) 39 if _, err := os.Stat(templateCommon); err == nil { 40 var err0 error 41 err = filepath.WalkDir(templateCommon, func(_path string, d fs.DirEntry, err error) error { 42 _path = filepath.ToSlash(_path) 43 if d.IsDir() { 44 if d.Name() != "common" { 45 err0 = os.MkdirAll(path.Join(p.String(), d.Name()), common.DefaultDirPermission) 46 if err0 != nil { 47 return err0 48 } 49 } 50 } else { 51 toWrite[strings.TrimPrefix(_path, templateCommon+"/")], err0 = os.ReadFile(_path) 52 if err0 != nil { 53 return err0 54 } 55 } 56 return nil 57 }) 58 if err != nil { 59 return err 60 } 61 } 62 63 for name, data := range toWrite { 64 err = os.WriteFile(path.Join(p.String(), name), data, common.DefaultFilePermission) 65 if err != nil { 66 return err 67 } 68 } 69 } else { 70 err := os.WriteFile(path.Join(p.String(), nameForMd+".md"), nil, common.DefaultFilePermission) 71 if err != nil { 72 return err 73 } 74 } 75 76 return nil 77 }