Move package count detection to go code
This commit is contained in:
parent
6185af37d5
commit
7d121c330d
@ -1,9 +1,7 @@
|
||||
source fetch_script_functions.sh
|
||||
|
||||
echo -e "${C3}Distribution: ${C4}${DISTRO_LONG_NAME} ($(uname -m))"
|
||||
echo -e "${C3}Hostname: ${C4}$(cat /etc/hostname)"
|
||||
echo -e "${C3}Kernel: ${C4}$(uname -s) $(uname -r)"
|
||||
echo -e "${C3}Packages: ${C4}$(get_packages)"
|
||||
echo -e "${C3}Packages: ${C4}${PACKAGES}"
|
||||
echo -e "${C3}Shell: ${C4}${USER_SHELL}"
|
||||
echo -e "${C3}Init: ${C4}${INIT_SYSTEM}"
|
||||
echo -e "${C3}Libc: ${C4}${LIBC}"
|
||||
|
@ -1,40 +0,0 @@
|
||||
command_exists() {
|
||||
if [ -z "$1" ]; then
|
||||
return 1
|
||||
fi
|
||||
if command -v "$1" &> /dev/null; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
get_packages() {
|
||||
ARRAY=()
|
||||
if command_exists dpkg; then
|
||||
ARRAY+=("$(dpkg-query -f '.\n' -W | wc -l) (dpkg)")
|
||||
fi
|
||||
if command_exists pacman; then
|
||||
ARRAY+=("$(pacman -Q | wc -l) (pacman)")
|
||||
fi
|
||||
if command_exists rpm; then
|
||||
ARRAY+=("$(rpm -qa | wc -l) (rpm)")
|
||||
fi
|
||||
if command_exists xbps-query; then
|
||||
ARRAY+=("$(xbps-query -l | wc -l) (xbps)")
|
||||
fi
|
||||
if command_exists bpm; then
|
||||
ARRAY+=("$(bpm list -c) (bpm)")
|
||||
fi
|
||||
if command_exists emerge; then
|
||||
ARRAY+=("$(ls -l /var/db/pkg/* | wc -l) (emerge)")
|
||||
fi
|
||||
if command_exists flatpak; then
|
||||
ARRAY+=("$(flatpak list | wc -l) (flatpak)")
|
||||
fi
|
||||
if command_exists snap; then
|
||||
ARRAY+=("$(snap list | wc -l) (snap)")
|
||||
fi
|
||||
echo "${ARRAY[@]}"
|
||||
unset ARRAY
|
||||
}
|
5
go.mod
5
go.mod
@ -3,19 +3,18 @@ module stormfetch
|
||||
go 1.22
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a
|
||||
github.com/jackmordaunt/ghw v1.0.4
|
||||
github.com/mitchellh/go-ps v1.0.0
|
||||
github.com/moby/sys/mountinfo v0.7.1
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/jackmordaunt/pcidb v1.0.1 // indirect
|
||||
github.com/jackmordaunt/wmi v1.2.4 // indirect
|
||||
github.com/kr/pretty v0.1.0 // indirect
|
||||
github.com/moby/sys/mountinfo v0.7.1 // indirect
|
||||
golang.org/x/sys v0.3.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@ -1,5 +1,3 @@
|
||||
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc h1:7D+Bh06CRPCJO3gr2F7h1sriovOZ8BMhca2Rg85c2nk=
|
||||
github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
|
1
main.go
1
main.go
@ -125,6 +125,7 @@ func SetupFetchEnv(showTimeTaken bool) []string {
|
||||
fmt.Println(fmt.Sprintf("Setting '%s' took %d milliseconds", key, end-start))
|
||||
}
|
||||
}
|
||||
setVariable("PACKAGES", func() string { return GetInstalledPackages() })
|
||||
setVariable("DISTRO_LONG_NAME", func() string { return getDistroInfo().LongName })
|
||||
setVariable("DISTRO_SHORT_NAME", func() string { return getDistroInfo().ShortName })
|
||||
setVariable("CPU_MODEL", func() string { return getCPUName() })
|
||||
|
53
pms.go
Normal file
53
pms.go
Normal file
@ -0,0 +1,53 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type PackageManager struct {
|
||||
Name string
|
||||
ExecutableName string
|
||||
PackageListCommand string
|
||||
}
|
||||
|
||||
var PackageManagers = []PackageManager{
|
||||
{Name: "dpkg", ExecutableName: "dpkg", PackageListCommand: "dpkg-query -f '${Package}\\n' -W"},
|
||||
{Name: "pacman", ExecutableName: "pacman", PackageListCommand: "pacman -Q"},
|
||||
{Name: "rpm", ExecutableName: "rpm", PackageListCommand: "rpm -qa"},
|
||||
{Name: "xbps", ExecutableName: "xbps-query", PackageListCommand: "xbps-query -l"},
|
||||
{Name: "bpm", ExecutableName: "bpm", PackageListCommand: "bpm list -n"},
|
||||
{Name: "portage", ExecutableName: "emerge", PackageListCommand: "find /var/db/pkg/*/ -mindepth 1 -maxdepth 1"},
|
||||
{Name: "flatpak", ExecutableName: "flatpak", PackageListCommand: "flatpak list"},
|
||||
{Name: "snap", ExecutableName: "snap", PackageListCommand: "snap list | tail +2"},
|
||||
}
|
||||
|
||||
func (pm *PackageManager) CountPackages() int {
|
||||
// Return 0 if package manager is not found
|
||||
if _, err := exec.LookPath(pm.ExecutableName); err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
output, err := exec.Command("/bin/sh", "-c", pm.PackageListCommand).Output()
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
return strings.Count(string(output), "\n")
|
||||
}
|
||||
|
||||
func GetInstalledPackages() (ret string) {
|
||||
for _, pm := range PackageManagers {
|
||||
count := pm.CountPackages()
|
||||
if count > 0 {
|
||||
if ret == "" {
|
||||
ret += fmt.Sprintf("%d (%s)", count, pm.Name)
|
||||
} else {
|
||||
ret += fmt.Sprintf(" %d (%s)", count, pm.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user