in utils/file.go [14:43]
func CopyWithOptions(srcDir, dstDir, prefixForDstFile string) error {
srcFiles, err := os.ReadDir(srcDir)
if err != nil {
return fmt.Errorf("failed to read source directory: %w", err)
}
if !Exists(dstDir) {
err = os.MkdirAll(dstDir, 0755)
if err != nil {
return fmt.Errorf("failed to create destination directory: %w", err)
}
}
for _, srcFile := range srcFiles {
srcFilePath := path.Join(srcDir, srcFile.Name())
dstFilePath := path.Join(dstDir, prefixForDstFile+srcFile.Name())
if srcFile.IsDir() {
if err := Copy(srcFilePath, dstFilePath); err != nil {
return fmt.Errorf("failed to copy directory: %w", err)
}
} else {
data, err := os.ReadFile(srcFilePath)
if err != nil {
return fmt.Errorf("failed to read source file: %w", err)
}
if err := os.WriteFile(dstFilePath, data, 0644); err != nil {
return fmt.Errorf("failed to write destination file: %w", err)
}
}
}
return nil
}