2017-09-22 13:47:15 +02:00
|
|
|
// Copyright (C) 2017 ScyllaDB
|
|
|
|
|
// Use of this source code is governed by a ALv2-style
|
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
package migrate
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/md5"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"io"
|
2021-04-29 18:19:32 +02:00
|
|
|
"io/fs"
|
2017-09-22 13:47:15 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var encode = hex.EncodeToString
|
|
|
|
|
|
|
|
|
|
func checksum(b []byte) string {
|
|
|
|
|
v := md5.Sum(b)
|
|
|
|
|
return encode(v[:])
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-29 18:19:32 +02:00
|
|
|
func fileChecksum(f fs.FS, path string) (string, error) {
|
|
|
|
|
file, err := f.Open(path)
|
2017-09-22 13:47:15 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return "", nil
|
|
|
|
|
}
|
2025-10-28 14:52:22 -04:00
|
|
|
defer func() {
|
|
|
|
|
_ = file.Close()
|
|
|
|
|
}()
|
2017-09-22 13:47:15 +02:00
|
|
|
|
|
|
|
|
h := md5.New()
|
2021-04-29 18:19:32 +02:00
|
|
|
if _, err := io.Copy(h, file); err != nil {
|
2017-09-22 13:47:15 +02:00
|
|
|
return "", err
|
|
|
|
|
}
|
|
|
|
|
v := h.Sum(nil)
|
2019-11-08 00:03:26 +01:00
|
|
|
return encode(v), nil
|
2017-09-22 13:47:15 +02:00
|
|
|
}
|