diff options
Diffstat (limited to 'tableMachinePackages.go')
| -rw-r--r-- | tableMachinePackages.go | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tableMachinePackages.go b/tableMachinePackages.go new file mode 100644 index 0000000..93208c0 --- /dev/null +++ b/tableMachinePackages.go @@ -0,0 +1,116 @@ +// Copyright 2025 WIT.COM Inc Licensed GPL 3.0 + +package zoopb + +import ( + "go.wit.com/log" +) + +// tables for what packages are currently installed + +func (m *Machine) PrintTable(pb *Packages) { + tablePB := m.makeSmartTable(pb) + tablePB.PrintTable() + var i int + for p := range pb.IterAll() { + if m.IsInstalled(p.Package) { + i += 1 + } + } + + log.Printf("pb.SmartTable: packages: total=%d installed=%d\n", pb.Len(), i) +} + +func (m *Machine) PrintInstalledTable() { + installed := NewPackages() + for p := range m.Wit.IterAll() { + if m.IsInstalled(p.Package) { + installed.Append(p) + } + } + tablePB := m.makeSmartTable(installed) + if tablePB == nil { + panic("WTF") + } + tablePB.PrintTable() + log.Printf("pb.SmartTable: %d installed packages\n", installed.Len()) +} + +func (m *Machine) makeSmartTable(pb *Packages) *PackagesTable { + t := pb.NewTable("apt packages") + t.NewUuid() + + var col *PackageFunc + + col = t.AddStringFunc(" I", func(p *Package) string { + if m.IsInstalled(p.Package) { + return " X" + } + return "" + }) + col.Width = 3 + + col = t.AddStringFunc("U", func(p *Package) string { + if m.WillUpgrade(p) { + return "X" + } + return "" + }) + col.Width = 1 + + col = t.AddPackage() + col.Width = 16 + + col = t.AddVersion() + col.Width = 20 + + col = t.AddStringFunc("md5sum", func(p *Package) string { + if p.DebInfo == nil { + return "" + } + return p.DebInfo.MD5SUM + }) + col.Width = 3 + + col = t.AddFilename() + col.Width = -1 + col.Header.Name = "apt package path" + + return t +} + +// true if the package 'p' is newer than the installed package +func (m *Machine) WillUpgrade(p *Package) bool { + check := m.FindInstalledByName(p.Package) + if check == nil { + // not installed. can not upgrade + return false + } + if check.Version != p.Version { + return true + } + return false +} + +/* +// this means somehow this machine has a newer version than the mirrors have +// true if the package 'p' is newer than the installed package +func (m *Machine) MirrorsOutOfDate(p *Package) bool { + check := m.FindInstalledByName(p.Package) + if check == nil { + // not installed + return false + } + v1, _ := fhelp.NewDebVersion(check.Version) + v2, _ := fhelp.NewDebVersion(p.Version) + if v1.Equal(v2) { + // log.Info("do nothing", v1, v2) + return false + } + if v2.LessThan(v1) { + log.Info("wow. you have a newer version on this box than the mirrors", v1, "to", v2) + return true + } + return false +} +*/ |
