34 lines
502 B
Go
34 lines
502 B
Go
package utils
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func CopyIfNotExists(src, dst string) (string, error) {
|
|
_, err := os.Stat(dst)
|
|
if err == nil {
|
|
return dst, nil
|
|
}
|
|
|
|
log.Printf("copying image: %s %s", src, dst)
|
|
srcFile, err := os.Open(src)
|
|
if err != nil {
|
|
return dst, err
|
|
}
|
|
defer srcFile.Close()
|
|
|
|
dstFile, err := os.Create(dst)
|
|
if err != nil {
|
|
return dst, err
|
|
}
|
|
defer dstFile.Close()
|
|
|
|
_, err = io.Copy(dstFile, srcFile)
|
|
if err != nil {
|
|
return dst, err
|
|
}
|
|
|
|
return dst, dstFile.Sync()
|
|
}
|