summaryrefslogtreecommitdiff
path: root/doAptUpgrade.go
blob: 37b2ca99008dc5a694600686665398bd5035b625 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
// Use of this source code is governed by the GPL 3.0

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("")
}