in pkg/osutil/osutil.go [85:132]
func CopyDir(
fileSys fs.FS,
src, dest string,
draftConfig *config.DraftConfig,
templateWriter templatewriter.TemplateWriter) error {
files, err := fs.ReadDir(fileSys, src)
if err != nil {
return err
}
for _, f := range files {
if f.Name() == configFileName {
continue
}
fileName := f.Name()
if overrideName, ok := draftConfig.FileNameOverrideMap[f.Name()]; ok {
fileName = overrideName
}
srcPath := path.Join(src, f.Name())
destPath := path.Join(dest, fileName)
log.Debugf("Source path: %s Dest path: %s", srcPath, destPath)
if f.IsDir() {
if err = templateWriter.EnsureDirectory(destPath); err != nil {
return err
}
if err = CopyDir(fileSys, srcPath, destPath, draftConfig, templateWriter); err != nil {
return err
}
} else {
fileContent, err := replaceTemplateVariables(fileSys, srcPath, draftConfig)
if err != nil {
return err
}
if err = checkAllVariablesSubstituted(string(fileContent)); err != nil {
return fmt.Errorf("error substituting file %s: %w", srcPath, err)
}
if err = templateWriter.WriteFile(destPath, fileContent); err != nil {
return err
}
}
}
return nil
}