redefined getPkgs logic, added new distros logos and package managers

This commit is contained in:
nekohepott 2026-06-17 04:16:27 +03:00
parent 1df5466434
commit 91a413584c
No known key found for this signature in database
4 changed files with 149 additions and 34 deletions

BIN
logos/alpine.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -20,6 +20,33 @@ func GetLogo(id string) string {
return "logos/nixos.png"
case strings.HasPrefix(id, "debian"):
return "logos/debian.png"
case strings.HasPrefix(id, "ubuntu"):
return "logos/ubuntu.png"
case strings.HasPrefix(id, "pop"):
return "logos/pop.png"
case strings.HasPrefix(id, "fedora"):
return "logos/fedora.png"
case strings.HasPrefix(id, "manjaro"):
return "logos/manjaro.png"
case strings.HasPrefix(id, "alpine"):
return "logos/alpine.png"
case strings.HasPrefix(id, "gentoo"):
return "logos/gentoo.png"
case strings.HasPrefix(id, "void"):
return "logos/void.png"
case strings.HasPrefix(id, "opensuse"):
return "logos/opensuse.png"
case strings.HasPrefix(id, "linuxmint"):
return "logos/mint.png"
case strings.HasPrefix(id, "kali"):
return "logos/kali.png"
case strings.HasPrefix(id, "cachyos"):
return "logos/cachyos.png"
case strings.HasPrefix(id, "endevaouros"):
return "logos/endevaouros.png"
case strings.HasPrefix(id, "artix"):
return "logos/artix.png"
default:
return "logos/linux.png"
}

View File

@ -2,50 +2,135 @@ package providers
import (
"os"
"os/exec"
"strconv"
"strings"
)
func checkNix() bool {
_, err := os.Stat("/nix")
if err != nil {
return false
}
return true
func pathExists(path string) bool {
_, err := os.Stat(path)
return err == nil
}
func addNix() string {
out, _ := exec.Command("sh", "-c", "nix-env -q | wc -l").Output()
nixPkgs := strings.TrimSpace(string(out)) + " (nix)"
return nixPkgs
func getNixOS() string {
if pathExists("/nix/store") {
pkgs, err := os.ReadDir("/nix/store")
if err != nil {
return "error reading /nix/store"
}
return strconv.Itoa(len(pkgs)) + " (nix)"
}
return ""
}
func getPacman() string {
if pathExists("/var/lib/pacman/local") {
pkgs, err := os.ReadDir("/var/lib/pacman/local")
if err != nil {
return "error reading /var/lib/pacman/local"
}
return strconv.Itoa(len(pkgs)-1) + " (pacman)"
}
return ""
}
func getApt() string {
if pathExists("/var/lib/apt") {
pkgs, err := os.ReadDir("/var/lib/apt")
if err != nil {
return "error reading /var/lib/apt"
}
return strconv.Itoa(len(pkgs)) + " (apt)"
}
return ""
}
func getDnf() string {
if pathExists("/var/lib/dnf") {
pkgs, err := os.ReadDir("/var/lib/dnf")
if err != nil {
return "error reading /var/lib/dnf"
}
return strconv.Itoa(len(pkgs)) + " (dnf)"
}
return ""
}
func getFlatpak() string {
if pathExists("/usr/bin/flatpak") {
pkgs, err := os.ReadDir("/var/lib/flatpak")
if err != nil {
return "error reading /var/lib/flatpak"
}
return strconv.Itoa(len(pkgs)) + " (flatpak)"
}
return ""
}
func getZypper() string {
if pathExists("/var/lib/zypp") {
pkgs, err := os.ReadDir("/var/lib/zypp")
if err != nil {
return "error reading /var/lib/zypp"
}
return strconv.Itoa(len(pkgs)) + " (zypper)"
}
return ""
}
func getXbps() string {
if pathExists("/var/db/xbps") {
pkgs, err := os.ReadDir("/var/db/xbps")
if err != nil {
return "error reading /var/db/xbps"
}
return strconv.Itoa(len(pkgs)) + " (xbps)"
}
return ""
}
func getPortage() string {
if pathExists("/var/lib/portage") {
pkgs, err := os.ReadDir("/var/lib/portage")
if err != nil {
return "error reading /var/lib/portage"
}
return strconv.Itoa(len(pkgs)) + " (emerge)"
}
return ""
}
func getNix() string {
if pathExists("~/.nix-profile") {
pkgs, err := os.ReadDir("~/.nix-profile/lib/nix/profiles/per-user")
if err != nil {
return "error reading ~/.nix-profile/lib/nix/profiles/per-user"
}
return strconv.Itoa(len(pkgs)) + " (nix)"
}
return ""
}
func GetPkgs() string {
var pkgs string
haveNix := checkNix()
if strings.HasPrefix(id, "arch") {
out, _ := exec.Command("sh", "-c", "pacman -Qq | wc -l").Output()
pkgs = strings.TrimSpace(string(out)) + " (pacman)"
if haveNix {
pkgs = strings.TrimSpace(pkgs + ", " + addNix())
rawPkgs := []string{
getPacman(),
getNixOS(),
getNix(),
getXbps(),
getDnf(),
getZypper(),
getApt(),
getPortage(),
getFlatpak(),
}
return pkgs
var pkgsList []string
for _, p := range rawPkgs {
if p != "" {
pkgsList = append(pkgsList, p)
}
if strings.HasPrefix(id, "debian") {
out, _ := exec.Command("sh", "-c", "dpkg -l | grep ^ii | wc -l").Output()
pkgs = strings.TrimSpace(string(out)) + " (apt)"
if haveNix {
pkgs = strings.TrimSpace(pkgs + ", " + addNix())
}
return pkgs
if len(pkgsList) == 0 {
return "unknown package manager"
}
if strings.HasPrefix(id, "nixos") {
entries, err := os.ReadDir("/run/current-system/sw/bin")
if err != nil {
return "can't get nix packages"
}
return strconv.Itoa(len(entries)) + " (nix)"
}
return "unknown"
return strings.Join(pkgsList[:], ", ")
}

View File

@ -66,7 +66,7 @@ func GetRam() string {
availableMB := available / 1024
usedMB := totalMB - availableMB
ram := fmt.Sprintf("%d / %d MiB (%d MiB available)", usedMB, totalMB, availableMB)
ram := fmt.Sprintf("%d / %d MiB", usedMB, totalMB)
ram = strings.TrimSpace(ram)
return ram