github.com/mutagen-io/mutagen@v0.18.0-rc1/pkg/filesystem/locking/lockertest/main.go (about) 1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 "os" 7 8 "github.com/mutagen-io/mutagen/cmd" 9 "github.com/mutagen-io/mutagen/pkg/filesystem/locking" 10 ) 11 12 func main() { 13 // Validate arguments and extract the lock path. 14 if len(os.Args) != 2 { 15 cmd.Fatal(errors.New("invalid number of arguments")) 16 } else if os.Args[1] == "" { 17 cmd.Fatal(errors.New("empty lock path")) 18 } 19 path := os.Args[1] 20 21 // Create a locker and attempt to acquire the lock. 22 if locker, err := locking.NewLocker(path, 0600); err != nil { 23 cmd.Fatal(errors.New("unable to create filesystem locker")) 24 } else if err = locker.Lock(false); err != nil { 25 cmd.Fatal(fmt.Errorf("lock acquisition failed: %w", err)) 26 } else if err = locker.Unlock(); err != nil { 27 cmd.Fatal(fmt.Errorf("lock release failed: %w", err)) 28 } else if err = locker.Close(); err != nil { 29 cmd.Fatal(fmt.Errorf("locker closure failed: %w", err)) 30 } 31 }