package fscache_test
import (
- "github.com/Kovensky/go-fscache"
+ "github.com/EliasFleckenstein03/go-fscache"
"math/rand"
"testing"
"time"
package fscache
import (
- "github.com/Kovensky/go-fscache/lock"
+ "github.com/gofrs/flock"
)
// Locks the file that backs the given key.
//
// If the call is successful, it's the caller's responsibility to call Unlock on the returned lock.
-func (cd *CacheDir) Lock(key ...CacheKey) (lock.FileLock, error) {
- l, err := lock.LockFile(cd.cachePath(key...))
- if l != nil {
- l.Lock()
- }
- return l, err
+func (cd *CacheDir) Lock(key ...CacheKey) (*flock.Flock, error) {
+ l := flock.New(cd.cachePath(key...))
+ return l, l.Lock()
}
package fscache_test
import (
- "github.com/Kovensky/go-fscache"
+ "github.com/EliasFleckenstein03/go-fscache"
"math/rand"
"testing"
"time"
--- /dev/null
+module github.com/EliasFleckenstein03/go-fscache
+
+go 1.18
+
+require github.com/gofrs/flock v0.8.1
+
+require (
+ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
+ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+)
--- /dev/null
+github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
+github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
+github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+++ /dev/null
-// Wrapper for github.com/tgulacsi/go-locking since it doesn't compile on windows.
-//
-// On windows, returns a dummy lock that always succeeds. On other OSes,
-// returns a *locking.FLock.
-//
-// Windows also does file locking on its own, but with different
-// semantics.
-package lock
-
-type FileLock interface {
- Lock() error
- Unlock() error
-}
+++ /dev/null
-// +build !windows
-
-package lock
-
-import "github.com/tgulacsi/go-locking"
-
-type flockLock struct {
- locking.FLock
-}
-
-func LockFile(p string) (FileLock, error) {
- flock, err := locking.NewFLock(p)
- if err == nil {
- return &flockLock{FLock: flock}, nil
- }
- return nil, err
-}
-
-func (fl *flockLock) Lock() error {
- return fl.FLock.Lock()
-}
-
-func (fl *flockLock) Unlock() error {
- return fl.FLock.Unlock()
-}
+++ /dev/null
-package lock
-
-func LockFile(p string) (FileLock, error) {
- return &winLock{}, nil
-}
-
-type winLock struct{}
-
-func (_ *winLock) Lock() error { return nil }
-func (_ *winLock) Unlock() error { return nil }