This commit is contained in:
2025-04-13 17:11:38 +03:00
parent a51a8ab963
commit 3603dc45a4
5 changed files with 73 additions and 64 deletions

42
fix.go
View File

@ -38,41 +38,43 @@ func FixCmd() *cli.Command {
Name: "fix",
Usage: gotext.Get("Attempt to fix problems with ALR"),
Action: func(c *cli.Context) error {
if utils.DropCapsToAlrUser() != nil {
err := utils.DropCapsToAlrUser()
if err != nil {
slog.Error(gotext.Get("Can't drop privileges"))
os.Exit(1)
return cli.Exit(err, 1)
}
ctx := c.Context
cfg := config.New()
err := cfg.Load()
err = cfg.Load()
if err != nil {
slog.Error(gotext.Get("Error loading config"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Error loading config"))
return cli.Exit(err, 1)
}
paths := cfg.GetPaths()
slog.Info(gotext.Get("Removing cache directory"))
slog.Info(gotext.Get("Clearing cache directory"))
// Remove all nested directories of paths.CacheDir
dir, err := os.Open(paths.CacheDir)
if err != nil {
slog.Error(gotext.Get("Unable to open cache directory"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Unable to open cache directory"))
return cli.Exit(err, 1)
}
defer dir.Close()
entries, err := dir.Readdirnames(-1)
if err != nil {
slog.Error(gotext.Get("Unable to read cache directory contents"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Unable to read cache directory contents"))
return cli.Exit(err, 1)
}
for _, entry := range entries {
err = os.RemoveAll(filepath.Join(paths.CacheDir, entry))
if err != nil {
slog.Error(gotext.Get("Unable to remove cache item"), "item", entry, "err", err)
os.Exit(1)
slog.Error(gotext.Get("Unable to remove cache item"), "item", entry)
return cli.Exit(err, 1)
}
}
@ -80,28 +82,28 @@ func FixCmd() *cli.Command {
err = os.MkdirAll(paths.CacheDir, 0o755)
if err != nil {
slog.Error(gotext.Get("Unable to create new cache directory"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Unable to create new cache directory"))
return cli.Exit(err, 1)
}
cfg = config.New()
err = cfg.Load()
if err != nil {
slog.Error(gotext.Get("Error loading config"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Error loading config"))
return cli.Exit(err, 1)
}
db := database.New(cfg)
err = db.Init(ctx)
if err != nil {
slog.Error(gotext.Get("Error initialization database"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Error initialization database"))
return cli.Exit(err, 1)
}
rs := repos.New(cfg, db)
err = rs.Pull(ctx, cfg.Repos())
if err != nil {
slog.Error(gotext.Get("Error pulling repos"), "err", err)
os.Exit(1)
slog.Error(gotext.Get("Error pulling repos"))
return cli.Exit(err, 1)
}
slog.Info(gotext.Get("Done"))