fixed the err handling and better comment

Signed-off-by: Krasi Georgiev <8903888+krasi-georgiev@users.noreply.github.com>
This commit is contained in:
Krasi Georgiev 2019-06-19 14:27:19 +03:00
parent 5d27fc48a8
commit ef9b3461c5
1 changed files with 7 additions and 8 deletions

View File

@ -128,16 +128,15 @@ func Rename(from, to string) error {
// Replace moves a file or directory to a new location and deletes any previous data.
// It is not atomic.
func Replace(from, to string) error {
// Remove destionation only if it is a dir.
// Otherwise os.Rename replaces the destination file and is atomic.
// Remove destination only if it is a dir otherwise leave it to os.Rename
// as it replaces the destination when it is file and is atomic.
{
f, err := os.Stat(to)
if err != nil {
return err
}
if f.IsDir() {
if err := os.RemoveAll(to); err != nil {
return err
if !os.IsNotExist(err) {
if err == nil && f.IsDir() {
if err := os.RemoveAll(to); err != nil {
return err
}
}
}
}