feat: Added utility for moving files

This commit is contained in:
2024-09-02 16:25:27 +12:00
parent 2f43e96904
commit 924bf85a9e

47
internal/util/files.go Normal file
View File

@@ -0,0 +1,47 @@
package util
import (
"fmt"
"io"
"os"
)
func MoveFile(src, dst string) error {
in, err := os.Open(src)
if err != nil {
return fmt.Errorf("couldn't open source file: %s", err)
}
out, err := os.Create(dst)
if err != nil {
in.Close()
return fmt.Errorf("couldn't open dest file: %s", err)
}
defer out.Close()
_, err = io.Copy(out, in)
in.Close()
if err != nil {
return fmt.Errorf("writing to output file failed: %s", err)
}
err = out.Sync()
if err != nil {
return fmt.Errorf("sync error: %s", err)
}
si, err := os.Stat(src)
if err != nil {
return fmt.Errorf("stat error: %s", err)
}
err = os.Chmod(dst, si.Mode())
if err != nil {
return fmt.Errorf("chmod error: %s", err)
}
err = os.Remove(src)
if err != nil {
return fmt.Errorf("failed removing original file: %s", err)
}
return nil
}