Compare commits

..

3 Commits

Author SHA1 Message Date
Ettore Di Giacinto
719ef16161 🆕 Tag 0.22.2 2021-12-28 16:01:35 +01:00
Ettore Di Giacinto
1a9073a97a 🎨 Display installed packages in luet search
Fixes #236
2021-12-28 15:04:00 +01:00
Ettore Di Giacinto
7e825400e2 🔧 Use crane.Insecure while checking image availability
As those checks are not consuming any digest, we just use them to assess
if we need to build or not certain packages. The backend will refuse the
image if not configured appropriately
2021-12-28 14:54:11 +01:00
4 changed files with 54 additions and 21 deletions

View File

@@ -30,7 +30,7 @@ var cfgFile string
var Verbose bool var Verbose bool
const ( const (
LuetCLIVersion = "0.22.1" LuetCLIVersion = "0.22.2"
LuetEnvPrefix = "LUET" LuetEnvPrefix = "LUET"
) )

View File

@@ -35,6 +35,7 @@ type PackageResult struct {
Target string `json:"target"` Target string `json:"target"`
Hidden bool `json:"hidden"` Hidden bool `json:"hidden"`
Files []string `json:"files"` Files []string `json:"files"`
Installed bool `json:"installed"`
} }
type Results struct { type Results struct {
@@ -45,13 +46,13 @@ func (r PackageResult) String() string {
return fmt.Sprintf("%s/%s-%s required for %s", r.Category, r.Name, r.Version, r.Target) return fmt.Sprintf("%s/%s-%s required for %s", r.Category, r.Name, r.Version, r.Target)
} }
var rows []string = []string{"Package", "Category", "Name", "Version", "Repository", "License"} var rows []string = []string{"Package", "Category", "Name", "Version", "Repository", "License", "Installed"}
func packageToRow(repo string, p pkg.Package) []string { func packageToRow(repo string, p pkg.Package, installed bool) []string {
return []string{p.HumanReadableString(), p.GetCategory(), p.GetName(), p.GetVersion(), repo, p.GetLicense()} return []string{p.HumanReadableString(), p.GetCategory(), p.GetName(), p.GetVersion(), repo, p.GetLicense(), fmt.Sprintf("%t", installed)}
} }
func packageToList(l *util.ListWriter, repo string, p pkg.Package) { func packageToList(l *util.ListWriter, repo string, p pkg.Package, installed bool) {
l.AppendItem(pterm.BulletListItem{ l.AppendItem(pterm.BulletListItem{
Level: 0, Text: p.HumanReadableString(), Level: 0, Text: p.HumanReadableString(),
TextStyle: pterm.NewStyle(pterm.FgCyan), Bullet: ">", BulletStyle: pterm.NewStyle(pterm.FgYellow), TextStyle: pterm.NewStyle(pterm.FgCyan), Bullet: ">", BulletStyle: pterm.NewStyle(pterm.FgYellow),
@@ -80,12 +81,32 @@ func packageToList(l *util.ListWriter, repo string, p pkg.Package) {
Level: 1, Text: fmt.Sprintf("Uri: %s ", strings.Join(p.GetURI(), " ")), Level: 1, Text: fmt.Sprintf("Uri: %s ", strings.Join(p.GetURI(), " ")),
Bullet: "->", BulletStyle: pterm.NewStyle(pterm.FgDarkGray), Bullet: "->", BulletStyle: pterm.NewStyle(pterm.FgDarkGray),
}) })
l.AppendItem(pterm.BulletListItem{
Level: 1, Text: fmt.Sprintf("Installed: %t ", installed),
Bullet: "->", BulletStyle: pterm.NewStyle(pterm.FgDarkGray),
})
}
var s *installer.System
func sys() *installer.System {
if s != nil {
return s
}
s = &installer.System{Database: util.DefaultContext.Config.GetSystemDB(), Target: util.DefaultContext.Config.System.Rootfs}
return s
}
func installed(p pkg.Package) bool {
s := sys()
_, err := s.Database.FindPackage(p)
return err == nil
} }
func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label, labelMatch, revdeps, hidden bool) Results { func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label, labelMatch, revdeps, hidden bool) Results {
var results Results var results Results
system := &installer.System{Database: util.DefaultContext.Config.GetSystemDB(), Target: util.DefaultContext.Config.System.Rootfs} system := sys()
var err error var err error
iMatches := pkg.Packages{} iMatches := pkg.Packages{}
@@ -104,9 +125,8 @@ func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label,
for _, pack := range iMatches { for _, pack := range iMatches {
if !revdeps { if !revdeps {
if !pack.IsHidden() || pack.IsHidden() && hidden { if !pack.IsHidden() || pack.IsHidden() && hidden {
t.AppendRow(packageToRow("system", pack, true))
t.AppendRow(packageToRow("system", pack)) packageToList(l, "system", pack, true)
packageToList(l, "system", pack)
f, _ := system.Database.GetPackageFiles(pack) f, _ := system.Database.GetPackageFiles(pack)
results.Packages = append(results.Packages, results.Packages = append(results.Packages,
PackageResult{ PackageResult{
@@ -116,6 +136,7 @@ func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label,
Repository: "system", Repository: "system",
Hidden: pack.IsHidden(), Hidden: pack.IsHidden(),
Files: f, Files: f,
Installed: true,
}) })
} }
} else { } else {
@@ -123,8 +144,9 @@ func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label,
packs, _ := system.Database.GetRevdeps(pack) packs, _ := system.Database.GetRevdeps(pack)
for _, revdep := range packs { for _, revdep := range packs {
if !revdep.IsHidden() || revdep.IsHidden() && hidden { if !revdep.IsHidden() || revdep.IsHidden() && hidden {
t.AppendRow(packageToRow("system", pack)) i := installed(pack)
packageToList(l, "system", pack) t.AppendRow(packageToRow("system", pack, i))
packageToList(l, "system", pack, i)
f, _ := system.Database.GetPackageFiles(revdep) f, _ := system.Database.GetPackageFiles(revdep)
results.Packages = append(results.Packages, results.Packages = append(results.Packages,
PackageResult{ PackageResult{
@@ -134,6 +156,7 @@ func searchLocally(term string, l *util.ListWriter, t *util.TableWriter, label,
Repository: "system", Repository: "system",
Hidden: revdep.IsHidden(), Hidden: revdep.IsHidden(),
Files: f, Files: f,
Installed: i,
}) })
} }
} }
@@ -172,14 +195,16 @@ func searchOnline(term string, l *util.ListWriter, t *util.TableWriter, label, l
for _, m := range matches { for _, m := range matches {
if !revdeps { if !revdeps {
if !m.Package.IsHidden() || m.Package.IsHidden() && hidden { if !m.Package.IsHidden() || m.Package.IsHidden() && hidden {
t.AppendRow(packageToRow(m.Repo.GetName(), m.Package)) i := installed(m.Package)
packageToList(l, m.Repo.GetName(), m.Package) t.AppendRow(packageToRow(m.Repo.GetName(), m.Package, i))
packageToList(l, m.Repo.GetName(), m.Package, i)
r := &PackageResult{ r := &PackageResult{
Name: m.Package.GetName(), Name: m.Package.GetName(),
Version: m.Package.GetVersion(), Version: m.Package.GetVersion(),
Category: m.Package.GetCategory(), Category: m.Package.GetCategory(),
Repository: m.Repo.GetName(), Repository: m.Repo.GetName(),
Hidden: m.Package.IsHidden(), Hidden: m.Package.IsHidden(),
Installed: i,
} }
if m.Artifact != nil { if m.Artifact != nil {
r.Files = m.Artifact.Files r.Files = m.Artifact.Files
@@ -190,10 +215,12 @@ func searchOnline(term string, l *util.ListWriter, t *util.TableWriter, label, l
packs, _ := m.Repo.GetTree().GetDatabase().GetRevdeps(m.Package) packs, _ := m.Repo.GetTree().GetDatabase().GetRevdeps(m.Package)
for _, revdep := range packs { for _, revdep := range packs {
if !revdep.IsHidden() || revdep.IsHidden() && hidden { if !revdep.IsHidden() || revdep.IsHidden() && hidden {
t.AppendRow(packageToRow(m.Repo.GetName(), revdep)) i := installed(revdep)
packageToList(l, m.Repo.GetName(), revdep) t.AppendRow(packageToRow(m.Repo.GetName(), revdep, i))
packageToList(l, m.Repo.GetName(), revdep, i)
r := &PackageResult{ r := &PackageResult{
Name: revdep.GetName(), Name: revdep.GetName(),
Installed: i,
Version: revdep.GetVersion(), Version: revdep.GetVersion(),
Category: revdep.GetCategory(), Category: revdep.GetCategory(),
Repository: m.Repo.GetName(), Repository: m.Repo.GetName(),
@@ -215,8 +242,9 @@ func searchLocalFiles(term string, l *util.ListWriter, t *util.TableWriter) Resu
matches, _ := util.DefaultContext.Config.GetSystemDB().FindPackageByFile(term) matches, _ := util.DefaultContext.Config.GetSystemDB().FindPackageByFile(term)
for _, pack := range matches { for _, pack := range matches {
t.AppendRow(packageToRow("system", pack)) i := installed(pack)
packageToList(l, "system", pack) t.AppendRow(packageToRow("system", pack, i))
packageToList(l, "system", pack, i)
f, _ := util.DefaultContext.Config.GetSystemDB().GetPackageFiles(pack) f, _ := util.DefaultContext.Config.GetSystemDB().GetPackageFiles(pack)
results.Packages = append(results.Packages, results.Packages = append(results.Packages,
PackageResult{ PackageResult{
@@ -226,6 +254,7 @@ func searchLocalFiles(term string, l *util.ListWriter, t *util.TableWriter) Resu
Repository: "system", Repository: "system",
Hidden: pack.IsHidden(), Hidden: pack.IsHidden(),
Files: f, Files: f,
Installed: i,
}) })
} }
@@ -255,8 +284,9 @@ func searchFiles(term string, l *util.ListWriter, t *util.TableWriter) Results {
matches = synced.SearchPackages(term, installer.FileSearch) matches = synced.SearchPackages(term, installer.FileSearch)
for _, m := range matches { for _, m := range matches {
t.AppendRow(packageToRow(m.Repo.GetName(), m.Package)) i := installed(m.Package)
packageToList(l, m.Repo.GetName(), m.Package) t.AppendRow(packageToRow(m.Repo.GetName(), m.Package, i))
packageToList(l, m.Repo.GetName(), m.Package, i)
results.Packages = append(results.Packages, results.Packages = append(results.Packages,
PackageResult{ PackageResult{
Name: m.Package.GetName(), Name: m.Package.GetName(),
@@ -265,6 +295,7 @@ func searchFiles(term string, l *util.ListWriter, t *util.TableWriter) Results {
Repository: m.Repo.GetName(), Repository: m.Repo.GetName(),
Hidden: m.Package.IsHidden(), Hidden: m.Package.IsHidden(),
Files: m.Artifact.Files, Files: m.Artifact.Files,
Installed: i,
}) })
} }
return results return results

View File

@@ -36,7 +36,7 @@ func TreePackages(treedir string) (searchResult SearchResult, err error) {
} }
func imageAvailable(image string) bool { func imageAvailable(image string) bool {
_, err := crane.Digest(image) _, err := crane.Digest(image, crane.Insecure)
return err == nil return err == nil
} }

View File

@@ -29,7 +29,9 @@ const (
) )
func imageAvailable(image string) bool { func imageAvailable(image string) bool {
_, err := crane.Digest(image) // We use crane.insecure as we just check if the image is available
// It's the daemon duty to use it or not based on the host settings
_, err := crane.Digest(image, crane.Insecure)
return err == nil return err == nil
} }