forked from Plemya-x/ALR
refactor
This commit is contained in:
83
repo.go
83
repo.go
@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user