41 lines
844 B
Go
41 lines
844 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/schollz/progressbar/v3"
|
|
)
|
|
|
|
func CopyNewFiles(newPath string, result *DiffResult) error {
|
|
delFile, err := os.Create("hdiff/deletefiles.txt")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer delFile.Close()
|
|
for _, f := range result.OnlyInOld {
|
|
fmt.Fprintln(delFile, f)
|
|
}
|
|
|
|
bar := progressbar.NewOptions(len(result.OnlyInNew),
|
|
progressbar.OptionSetDescription("📂 Copying new files"),
|
|
progressbar.OptionSetWidth(30),
|
|
progressbar.OptionShowCount(),
|
|
progressbar.OptionSetPredictTime(true),
|
|
)
|
|
|
|
for _, rel := range result.OnlyInNew {
|
|
src := filepath.Join(newPath, rel)
|
|
dst := filepath.Join("hdiff", rel)
|
|
os.MkdirAll(filepath.Dir(dst), 0755)
|
|
|
|
if err := copyFile(src, dst); err != nil {
|
|
fmt.Println("copy error:", err)
|
|
}
|
|
bar.Add(1)
|
|
}
|
|
bar.Finish()
|
|
return nil
|
|
}
|