games-screenshot-manager/pkg/helpers/files.go

56 lines
932 B
Go

package helpers
import (
"crypto/md5"
"fmt"
"io"
"log"
"os"
)
func CopyFile(src, dst string) (int64, error) {
sourceFileStat, err := os.Stat(src)
if err != nil {
return 0, err
}
if !sourceFileStat.Mode().IsRegular() {
return 0, fmt.Errorf("%s is not a regular file", src)
}
source, err := os.Open(src)
if err != nil {
return 0, err
}
defer source.Close()
// Check if destination exists
if _, err := os.Stat(dst); !os.IsNotExist(err) {
log.Printf("- %s already exists, skipping...", dst)
return 0, nil
}
destination, err := os.Create(dst)
if err != nil {
return 0, err
}
defer destination.Close()
nBytes, err := io.Copy(destination, source)
return nBytes, err
}
func Md5File(src string) ([]byte, error) {
f, err := os.Open(src)
if err != nil {
return nil, err
}
defer f.Close()
h := md5.New()
if _, err := io.Copy(h, f); err != nil {
return nil, err
}
return h.Sum(nil), nil
}