diff --git a/fix.go b/fix.go new file mode 100644 index 0000000..f30bfc9 --- /dev/null +++ b/fix.go @@ -0,0 +1,46 @@ +package main + +import ( + "os" + + "github.com/genjidb/genji" + "github.com/urfave/cli/v2" + "go.arsenm.dev/logger/log" + "go.arsenm.dev/lure/internal/config" + "go.arsenm.dev/lure/internal/db" + "go.arsenm.dev/lure/internal/repos" +) + +func fixCmd(c *cli.Context) error { + gdb.Close() + + err := os.RemoveAll(config.CacheDir) + if err != nil { + log.Fatal("Unable to remove cache directory").Err(err).Send() + } + + err = os.MkdirAll(config.CacheDir, 0o755) + if err != nil { + log.Fatal("Unable to create new cache directory").Err(err).Send() + } + + gdb, err = genji.Open(config.DBPath) + if err != nil { + log.Fatal("Unable to create new database").Err(err).Send() + } + + // Make sure the DB is rebuilt when repos are pulled + config.DBPresent = false + + err = db.Init(gdb) + if err != nil { + log.Fatal("Error initializing database").Err(err).Send() + } + + err = repos.Pull(c.Context, gdb, cfg.Repos) + if err != nil { + log.Fatal("Error pulling repos").Err(err).Send() + } + + return nil +} diff --git a/main.go b/main.go index d676c5a..f204d06 100644 --- a/main.go +++ b/main.go @@ -146,6 +146,11 @@ func main() { Aliases: []string{"ref"}, Action: refreshCmd, }, + { + Name: "fix", + Usage: "Attempt to fix problems with LURE", + Action: fixCmd, + }, { Name: "version", Usage: "Display the current LURE version and exit",