func()

in pkg/testutil/bldr/git_worktree.go [47:86]


func (bldr *GitWorktreeBuilder) CopyFromDir(fromDir string) *GitWorktreeBuilder {
	err := filepath.Walk(fromDir, func(path string, info fs.FileInfo, err error) error {
		if err != nil {
			return err
		}

		withoutOldDir, _ := strings.CutPrefix(path, fromDir)
		newPath, _ := strings.CutPrefix(withoutOldDir, "/")

		if newPath == "" {
			return nil
		}

		if info.IsDir() {
			return bldr.worktree.Filesystem.MkdirAll(newPath, info.Mode())
		}

		fromFile, err := os.Open(path)
		if err != nil {
			return fmt.Errorf("failed to open from file: %w", err)
		}
		defer func() { _ = fromFile.Close() }()

		toFile, err := bldr.worktree.Filesystem.OpenFile(newPath, syscall.O_WRONLY|syscall.O_CREAT|syscall.O_TRUNC, info.Mode())
		if err != nil {
			return fmt.Errorf("failed to open new file: %w", err)
		}
		defer func() { _ = toFile.Close() }()

		_, err = io.Copy(toFile, fromFile)
		if err != nil {
			return fmt.Errorf("failed to copy from old to new file: %w", err)
		}

		return nil
	})

	require.NoError(bldr.t, err)
	return bldr
}