wit-test/doAptUpgrade.go

71 lines
1.6 KiB
Go

package main
import (
"fmt"
"go.wit.com/lib/gui/shell"
"go.wit.com/log"
)
func doAptUpgrade() {
if argv.DryRun {
log.Info("--dry-run", []string{"apt", "update"})
} else {
result := shell.Run([]string{"apt", "update"})
if result.Error != nil {
log.Info("apt update error:", result.Error)
badExit(result.Error)
}
}
fmt.Println("Installed Packages:")
loop := me.forge.Machine.Wit.SortByName()
for loop.Scan() {
p := loop.Next()
// log.Info("apt install", name)
if me.forge.Machine.IsInstalled(p.Name) {
if argv.DryRun {
log.Info("--dry-run", []string{"apt", "install", p.Name})
} else {
shell.RunRealtime([]string{"apt", "install", p.Name})
}
}
}
okExit("installed")
}
func doAptList() {
log.DaemonMode(true)
defer log.DaemonMode(false)
fmt.Println("Installed Packages:")
loop := me.forge.Machine.Wit.SortByName()
for loop.Scan() {
p := loop.Next()
var end string
var version string
if me.forge.Config.IsPrivate(p.Name) {
end += "(private) "
}
if actualp := me.forge.Machine.FindVersion(p.Name, p.Version); actualp != nil {
// end += "(version match) "
} else {
end += "(version mismatch) " + actualp.Version + " " + version + " "
}
if actualp := me.forge.Machine.FindInstalledByName(p.Name); actualp != nil {
if p.Version != actualp.Version {
end += "(installed " + actualp.Version + " vs " + p.Version + ") "
} else {
end += "(installed ok) "
}
version = actualp.Version
}
if me.forge.Config.IsReadOnly(p.Name) {
// end += " (readonly) "
} else {
end += "(writable) "
}
log.Printf("%-30s %-8s %s\n", p.Name, p.Version, end) // p.PkgName)
}
okExit("")
}