From 8de8d0070e2ba15c119776c0797402549bdcd153 Mon Sep 17 00:00:00 2001 From: Boris Bera Date: Sun, 10 Nov 2024 13:37:59 -0500 Subject: [PATCH] chore: move lockfile code to internal module In a future commit, I'll need the lockfile code to access the config file. This solves an import cycle. --- cmd/backup.go | 5 ++--- cmd/check.go | 5 ++--- cmd/cron.go | 5 ++--- cmd/exec.go | 5 ++--- cmd/forget.go | 5 ++--- cmd/restore.go | 5 ++--- cmd/root.go | 3 +-- cmd/unlock.go | 3 +-- internal/config.go | 3 +-- internal/location.go | 5 ++--- internal/{lock => }/lock.go | 6 +++--- internal/{lock => }/lock_test.go | 2 +- main.go | 4 ++-- 13 files changed, 23 insertions(+), 33 deletions(-) rename internal/{lock => }/lock.go (96%) rename internal/{lock => }/lock_test.go (99%) diff --git a/cmd/backup.go b/cmd/backup.go index a575220..da999a7 100644 --- a/cmd/backup.go +++ b/cmd/backup.go @@ -6,7 +6,6 @@ import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/colors" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -15,9 +14,9 @@ var backupCmd = &cobra.Command{ Short: "Create backups for given locations", Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() selected, err := internal.GetAllOrSelected(cmd, false) CheckErr(err) diff --git a/cmd/check.go b/cmd/check.go index 159f341..6d458e4 100644 --- a/cmd/check.go +++ b/cmd/check.go @@ -3,7 +3,6 @@ package cmd import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/colors" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -12,9 +11,9 @@ var checkCmd = &cobra.Command{ Short: "Check if everything is setup", Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() CheckErr(internal.CheckConfig()) diff --git a/cmd/cron.go b/cmd/cron.go index 175ae13..be5a4bd 100644 --- a/cmd/cron.go +++ b/cmd/cron.go @@ -3,7 +3,6 @@ package cmd import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/flags" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -13,9 +12,9 @@ var cronCmd = &cobra.Command{ Long: `Intended to be mainly triggered by an automated system like systemd or crontab. For each location checks if a cron backup is due and runs it.`, Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() err = internal.RunCron() CheckErr(err) diff --git a/cmd/exec.go b/cmd/exec.go index 107b0e1..b3f5db1 100644 --- a/cmd/exec.go +++ b/cmd/exec.go @@ -5,7 +5,6 @@ import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/colors" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -14,9 +13,9 @@ var execCmd = &cobra.Command{ Short: "Execute arbitrary native restic commands for given backends", Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() selected, err := internal.GetAllOrSelected(cmd, true) CheckErr(err) diff --git a/cmd/forget.go b/cmd/forget.go index 93d7137..ba3b594 100644 --- a/cmd/forget.go +++ b/cmd/forget.go @@ -2,7 +2,6 @@ package cmd import ( "github.com/cupcakearmy/autorestic/internal" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -11,9 +10,9 @@ var forgetCmd = &cobra.Command{ Short: "Forget and optionally prune snapshots according the specified policies", Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() selected, err := internal.GetAllOrSelected(cmd, false) CheckErr(err) diff --git a/cmd/restore.go b/cmd/restore.go index 8faf4a7..f84b240 100644 --- a/cmd/restore.go +++ b/cmd/restore.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/cupcakearmy/autorestic/internal" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -14,9 +13,9 @@ var restoreCmd = &cobra.Command{ Args: cobra.MaximumNArgs(1), Run: func(cmd *cobra.Command, args []string) { internal.GetConfig() - err := lock.Lock() + err := internal.Lock() CheckErr(err) - defer lock.Unlock() + defer internal.Unlock() location, _ := cmd.Flags().GetString("location") l, ok := internal.GetLocation(location) diff --git a/cmd/root.go b/cmd/root.go index df69ab4..4db353e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -8,7 +8,6 @@ import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/colors" "github.com/cupcakearmy/autorestic/internal/flags" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" homedir "github.com/mitchellh/go-homedir" @@ -18,7 +17,7 @@ import ( func CheckErr(err error) { if err != nil { colors.Error.Fprintln(os.Stderr, "Error:", err) - lock.Unlock() + internal.Unlock() os.Exit(1) } } diff --git a/cmd/unlock.go b/cmd/unlock.go index 75aabf5..0b79c8d 100644 --- a/cmd/unlock.go +++ b/cmd/unlock.go @@ -9,7 +9,6 @@ import ( "github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal/colors" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -33,7 +32,7 @@ To check you can run "ps aux | grep autorestic".`, } } - err := lock.Unlock() + err := internal.Unlock() if err != nil { colors.Error.Println("Could not unlock:", err) return diff --git a/internal/config.go b/internal/config.go index c5430d3..89e7c82 100644 --- a/internal/config.go +++ b/internal/config.go @@ -10,7 +10,6 @@ import ( "github.com/cupcakearmy/autorestic/internal/colors" "github.com/cupcakearmy/autorestic/internal/flags" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/joho/godotenv" "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" @@ -40,7 +39,7 @@ func exitConfig(err error, msg string) { if msg != "" { colors.Error.Println(msg) } - lock.Unlock() + Unlock() os.Exit(1) } diff --git a/internal/location.go b/internal/location.go index 221c5f3..5ba7b56 100644 --- a/internal/location.go +++ b/internal/location.go @@ -11,7 +11,6 @@ import ( "github.com/cupcakearmy/autorestic/internal/colors" "github.com/cupcakearmy/autorestic/internal/flags" - "github.com/cupcakearmy/autorestic/internal/lock" "github.com/cupcakearmy/autorestic/internal/metadata" "github.com/robfig/cron" ) @@ -442,11 +441,11 @@ func (l Location) RunCron() error { if err != nil { return err } - last := time.Unix(lock.GetCron(l.name), 0) + last := time.Unix(GetCron(l.name), 0) next := schedule.Next(last) now := time.Now() if now.After(next) { - lock.SetCron(l.name, now.Unix()) + SetCron(l.name, now.Unix()) errs := l.Backup(true, "") if len(errs) > 0 { return fmt.Errorf("Failed to backup location \"%s\":\n%w", l.name, errors.Join(errs...)) diff --git a/internal/lock/lock.go b/internal/lock.go similarity index 96% rename from internal/lock/lock.go rename to internal/lock.go index caae87c..6226f12 100644 --- a/internal/lock/lock.go +++ b/internal/lock.go @@ -1,4 +1,4 @@ -package lock +package internal import ( "os" @@ -12,7 +12,7 @@ import ( var lock *viper.Viper var file string -var once sync.Once +var lockOnce sync.Once const ( RUNNING = "running" @@ -36,7 +36,7 @@ func getLockfilePath() string { func getLock() *viper.Viper { if lock == nil { - once.Do(func() { + lockOnce.Do(func() { lock = viper.New() lock.SetDefault("running", false) file = getLockfilePath() diff --git a/internal/lock/lock_test.go b/internal/lock_test.go similarity index 99% rename from internal/lock/lock_test.go rename to internal/lock_test.go index 7546d9d..83ea7cc 100644 --- a/internal/lock/lock_test.go +++ b/internal/lock_test.go @@ -1,4 +1,4 @@ -package lock +package internal import ( "log" diff --git a/main.go b/main.go index ae644c3..e0d9ae5 100644 --- a/main.go +++ b/main.go @@ -22,7 +22,7 @@ import ( "syscall" "github.com/cupcakearmy/autorestic/cmd" - "github.com/cupcakearmy/autorestic/internal/lock" + "github.com/cupcakearmy/autorestic/internal" ) func handleCtrlC() { @@ -31,7 +31,7 @@ func handleCtrlC() { go func() { sig := <-c fmt.Println("Signal:", sig) - lock.Unlock() + internal.Unlock() os.Exit(0) }() }