mirror of
https://github.com/EnumeratedDev/stormfetch.git
synced 2025-07-12 10:40:06 +00:00
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}Distribution: ${C4}${DISTRO_LONG_NAME} ($(uname -m))"
|
||||||
echo -e "${C3}Hostname: ${C4}$(cat /etc/hostname)"
|
echo -e "${C3}Hostname: ${C4}$(cat /etc/hostname)"
|
||||||
echo -e "${C3}Kernel: ${C4}$(uname -s) $(uname -r)"
|
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}Shell: ${C4}${USER_SHELL}"
|
||||||
echo -e "${C3}Init: ${C4}${INIT_SYSTEM}"
|
echo -e "${C3}Init: ${C4}${INIT_SYSTEM}"
|
||||||
echo -e "${C3}Libc: ${C4}${LIBC}"
|
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
|
go 1.22
|
||||||
|
|
||||||
require (
|
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/jackmordaunt/ghw v1.0.4
|
||||||
github.com/mitchellh/go-ps v1.0.0
|
github.com/mitchellh/go-ps v1.0.0
|
||||||
|
github.com/moby/sys/mountinfo v0.7.1
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
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/go-ole/go-ole v1.2.6 // indirect
|
||||||
github.com/jackmordaunt/pcidb v1.0.1 // indirect
|
github.com/jackmordaunt/pcidb v1.0.1 // indirect
|
||||||
github.com/jackmordaunt/wmi v1.2.4 // indirect
|
github.com/jackmordaunt/wmi v1.2.4 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // 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
|
golang.org/x/sys v0.3.0 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // 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 h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
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=
|
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))
|
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_LONG_NAME", func() string { return getDistroInfo().LongName })
|
||||||
setVariable("DISTRO_SHORT_NAME", func() string { return getDistroInfo().ShortName })
|
setVariable("DISTRO_SHORT_NAME", func() string { return getDistroInfo().ShortName })
|
||||||
setVariable("CPU_MODEL", func() string { return getCPUName() })
|
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