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  }