main amadaluzia/webfetch / internal / sysinfo.go
 1package internal
 2
 3import (
 4	"syscall"
 5)
 6
 7type SystemInfo struct {
 8	OS            string
 9	Hostname      string
10	Username      string
11	KernelRelease string
12	KernelName    string
13	MachineArch   string
14	Shell         string
15	Uptime        Uptime
16	Terminal      string
17	MemTotal      int
18	MemFree       int
19	MemAvailable  int
20	DesktopInfo   DesktopInfo
21	Locale        string
22}
23
24func GetSysinfo() (SystemInfo, error) {
25	var sysinfo SystemInfo
26	var uname syscall.Utsname
27	if err := syscall.Uname(&uname); err != nil {
28		return sysinfo, err
29	}
30	passwd, err := GetPasswd()
31	if err != nil {
32		return sysinfo, err
33	}
34	hostname, err := GetNodename(uname)
35	if err != nil {
36		return sysinfo, err
37	}
38	osRelease, err := GetOsRelease()
39	if err != nil {
40		return sysinfo, err
41	}
42	username, err := GetUsername()
43	if err != nil {
44		return sysinfo, err
45	}
46	kversion, err := GetKernelRelease(uname)
47	if err != nil {
48		return sysinfo, err
49	}
50	kname, err := GetKernelName(uname)
51	if err != nil {
52		return sysinfo, err
53	}
54	march, err := GetMachineArch(uname)
55	if err != nil {
56		return sysinfo, err
57	}
58	shell, err := GetShell(username, passwd)
59	if err != nil {
60		return sysinfo, err
61	}
62	up, err := GetUptime()
63	if err != nil {
64		return sysinfo, err
65	}
66	terminal, err := GetTerminal()
67	if err != nil {
68		return sysinfo, err
69	}
70	meminfo, err := GetMemoryInfo()
71	if err != nil {
72		return sysinfo, err
73	}
74	sysinfo.OS = osRelease["PRETTY_NAME"]
75	sysinfo.Hostname = hostname
76	sysinfo.Username = username
77	sysinfo.KernelRelease = kversion
78	sysinfo.KernelName = kname
79	sysinfo.MachineArch = march
80	sysinfo.Shell = shell
81	sysinfo.Uptime = up
82	sysinfo.Terminal = terminal
83	sysinfo.MemTotal = meminfo["MemTotal"]
84	sysinfo.MemFree = meminfo["MemFree"]
85	sysinfo.MemAvailable = meminfo["MemAvailable"]
86	sysinfo.DesktopInfo = GetDesktopInfo()
87	sysinfo.Locale = GetLocale()
88	return sysinfo, nil
89}