MoveFile moves file from src to dst. By default the rename filesystem system call is used. If src and dst point to different volumes the file copy is used as a fallback
(afs afero.Fs, src, dst string, fileMode, dirMode fs.FileMode)
| 14 | // By default the rename filesystem system call is used. If src and dst point to different volumes |
| 15 | // the file copy is used as a fallback |
| 16 | func MoveFile(afs afero.Fs, src, dst string, fileMode, dirMode fs.FileMode) error { |
| 17 | if afs.Rename(src, dst) == nil { |
| 18 | return nil |
| 19 | } |
| 20 | // fallback |
| 21 | err := Copy(afs, src, dst, fileMode, dirMode) |
| 22 | if err != nil { |
| 23 | _ = afs.Remove(dst) |
| 24 | return err |
| 25 | } |
| 26 | if err := afs.RemoveAll(src); err != nil { |
| 27 | return err |
| 28 | } |
| 29 | return nil |
| 30 | } |
| 31 | |
| 32 | // CopyFile copies a file from source to dest and returns |
| 33 | // an error if any. |
no test coverage detected