/
sysinfo_linux.go
63 lines (50 loc) · 1.49 KB
/
sysinfo_linux.go
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
//go:build linux
package root
import (
"encoding/json"
"fmt"
"os/user"
msg "github.com/aziontech/azion-cli/messages/root"
"github.com/aziontech/azion-cli/pkg/cmdutil"
"github.com/aziontech/azion-cli/pkg/logger"
"github.com/zcalusic/sysinfo"
"go.uber.org/zap"
)
func showUpdadeMessageSystem(f *cmdutil.Factory, vNumber string) error {
current, err := user.Current()
if err != nil {
logger.Debug("Error while getting current user's information", zap.Error(err))
return msg.ErrorCurrentUser
}
if current.Uid != "0" {
logger.FInfo(f.IOStreams.Out, msg.CouldNotGetUser)
return nil
}
var si sysinfo.SysInfo
si.GetSysInfo()
data, err := json.MarshalIndent(&si, "", " ")
if err != nil {
logger.Debug("Error while marshaling current user's information", zap.Error(err))
return msg.ErrorMarshalUserInfo
}
var osInfo *OSInfo
err = json.Unmarshal(data, &osInfo)
if err != nil {
logger.Debug("Error while unmarshaling current user's information", zap.Error(err))
return msg.ErrorUnmarshalUserInfo
}
if osInfo == nil {
logger.FInfo(f.IOStreams.Out, msg.CouldNotGetUser)
return nil
}
logger.FInfo(f.IOStreams.Out, msg.DownloadRelease)
switch osInfo.OS.Vendor {
case "debian":
logger.FInfo(f.IOStreams.Out, fmt.Sprintf(msg.DpkgUpdate, vNumber))
case "alpine":
logger.FInfo(f.IOStreams.Out, fmt.Sprintf(msg.ApkUpdate, vNumber))
case "centos", "fedora", "opensuse", "mageia", "mandriva":
logger.FInfo(f.IOStreams.Out, fmt.Sprintf(msg.RpmUpdate, vNumber))
}
return nil
}