1
0
mirror of https://github.com/rancher/rke.git synced 2025-09-01 15:06:23 +00:00

Add util command

This commit is contained in:
Sebastiaan van Steenis
2020-09-28 14:59:44 +02:00
parent 91aed199f0
commit a68a64c0ce
8 changed files with 351 additions and 19 deletions

View File

@@ -2,6 +2,8 @@ package util
import (
"fmt"
"io"
"io/ioutil"
"net/url"
"os"
"reflect"
@@ -180,3 +182,65 @@ func CleanWindowsPath(s string) string {
}
return strings.Join(new, "\\")
}
func ReplaceFileWithBackup(originalFile, prefixBackupFile string) error {
fileExists, err := IsFileExists(originalFile)
if err != nil {
return err
}
if !fileExists {
return nil
}
tmpfile, err := ioutil.TempFile(".", prefixBackupFile)
if err != nil {
return err
}
err = os.Rename(originalFile, tmpfile.Name())
if err != nil {
return err
}
logrus.Infof("Moved file [%s] to new location [%s] as back-up", originalFile, tmpfile.Name())
return nil
}
func CopyFileWithPrefix(originalFile, prefixDestFile string) error {
fileExists, err := IsFileExists(originalFile)
if err != nil {
return err
}
if !fileExists {
return nil
}
sourceFileStat, err := os.Stat(originalFile)
if err != nil {
return err
}
if !sourceFileStat.Mode().IsRegular() {
return fmt.Errorf("%s is not a regular file", originalFile)
}
source, err := os.Open(originalFile)
if err != nil {
return err
}
defer source.Close()
destFile, err := ioutil.TempFile(".", prefixDestFile)
if err != nil {
return err
}
destination, err := os.Create(destFile.Name())
if err != nil {
return err
}
defer destination.Close()
_, err = io.Copy(destination, source)
if err != nil {
return err
}
logrus.Infof("Copied file [%s] to new location [%s] as back-up", originalFile, destFile.Name())
return nil
}