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  }