This commit is contained in:
2025-04-13 20:22:32 +03:00
parent b8cb7af3bb
commit e3aaa88822
8 changed files with 139 additions and 109 deletions

83
repo.go
View File

@ -30,11 +30,8 @@ import (
"gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils"
appbuilder "gitea.plemya-x.ru/Plemya-x/ALR/internal/cliutils/app_builder"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/types"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/utils"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
)
func AddRepoCmd() *cli.Command {
@ -57,31 +54,32 @@ func AddRepoCmd() *cli.Command {
},
},
Action: func(c *cli.Context) error {
err := utils.ExitIfNotRoot()
if err != nil {
if err := utils.ExitIfNotRoot(); err != nil {
return err
}
ctx := c.Context
name := c.String("name")
repoURL := c.String("url")
cfg := config.New()
err = cfg.Load()
ctx := c.Context
deps, err := appbuilder.
New(ctx).
WithConfig().
Build()
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error loading config"), err)
return err
}
defer deps.Defer()
cfg := deps.Cfg
reposSlice := cfg.Repos()
for _, repo := range reposSlice {
if repo.URL == repoURL {
slog.Error("Repo already exists", "name", repo.Name)
os.Exit(1)
return cliutils.FormatCliExit(gotext.Get("Repo %s already exists", repo.Name), nil)
}
}
reposSlice = append(reposSlice, types.Repo{
Name: name,
URL: repoURL,
@ -93,22 +91,20 @@ func AddRepoCmd() *cli.Command {
return cliutils.FormatCliExit(gotext.Get("Error saving config"), err)
}
if utils.DropCapsToAlrUser() != nil {
slog.Error(gotext.Get("Can't drop privileges"))
os.Exit(1)
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
return err
}
db := database.New(cfg)
err = db.Init(ctx)
deps, err = appbuilder.
New(ctx).
UseConfig(cfg).
WithDB().
WithReposForcePull().
Build()
if err != nil {
slog.Error(gotext.Get("Error pulling repos"), "err", err)
}
rs := repos.New(cfg, db)
err = rs.Pull(ctx, cfg.Repos())
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error pulling repos"), err)
return err
}
defer deps.Defer()
return nil
},
@ -129,19 +125,24 @@ func RemoveRepoCmd() *cli.Command {
},
},
Action: func(c *cli.Context) error {
err := utils.ExitIfNotRoot()
if err != nil {
if err := utils.ExitIfNotRoot(); err != nil {
return err
}
ctx := c.Context
name := c.String("name")
cfg := config.New()
err = cfg.Load()
deps, err := appbuilder.
New(ctx).
WithConfig().
Build()
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error loading config"), err)
return err
}
defer deps.Defer()
cfg := deps.Cfg
found := false
index := 0
@ -163,18 +164,26 @@ func RemoveRepoCmd() *cli.Command {
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error removing repo directory"), err)
}
err = cfg.SaveUserConfig()
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error saving config"), err)
}
db := database.New(cfg)
err = db.Init(ctx)
if err != nil {
os.Exit(1)
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
return err
}
err = db.DeletePkgs(ctx, "repository = ?", name)
deps, err = appbuilder.
New(ctx).
UseConfig(cfg).
WithDB().
Build()
if err != nil {
return err
}
defer deps.Defer()
err = deps.DB.DeletePkgs(ctx, "repository = ?", name)
if err != nil {
return cliutils.FormatCliExit(gotext.Get("Error removing packages from database"), err)
}