#!/bin/sh
#
#    fet.sh
#  a fetch in pure POSIX shell
#
# by 6kg@github
#
# Modified by me

## Distro
# freedesktop.org/software/systemd/man/os-release.html
# a common file that has variables about the distro
for os in /etc/os-release /usr/lib/os-release; do
	# some POSIX shells exit when trying to source a file that doesn't exist
	[ -f $os ] && . $os && break
done

## Uptime
# the simple math is shamefully stolen from aosync
IFS=. read -r uptime _ < /proc/uptime
d=$((uptime / 60 / 60 / 24))
up=$(printf %02d:%02d $((uptime / 60 / 60 % 24)) $((uptime / 60 % 60)))
[ "$d" -gt 0 ] && up="${d}d $up"

## Packages
# clean environment, then make every file in the dir an argument,
# then save the argument count to $pkgs
set --
# kiss, arch, debian, void, gentoo
for i in '/var/db/kiss/installed/*'  '/var/lib/pacman/local/[0-9a-z]*' \
'/var/lib/dpkg/info/*.list'  '/var/db/xbps/.*'  '/var/db/pkg/*/*'; do
    set -- $i
    [ $# -gt 1 ] && pkgs="$#" && break
done

[ -d "/var/db/kiss" ] && pkgs="$pkgs (kiss)"
[ -d "/var/lib/pacman" ] && pkgs="$pkgs (pacman)"
[ -d "/var/lib/dpkg" ] && pkgs="$pkgs (dpkg)"
[ -d "/var/db/xbps" ] && pkgs="$pkgs (xbps)"
[ -d "/var/db/pkg" ] && pkgs="$pkgs (emerge)"

## Packages - other package managers
# flatpak
set --
which flatpak > /dev/null 2>&1 && pkgs="$pkgs $(flatpak list | wc -l) (flatpak)"
# nix-env
set --
which nix-env > /dev/null 2>&1 && pkgs="$pkgs $(ls /nix/store | wc -l) (nix-env)"


col() {
	printf '  '
	for i in 1 2 3 4 5 6; do
		printf '\033[9%sm%s' "$i" "${colourblocks:-▅▅}"
	done
	printf '\033[0m\n'
}

print() {
	[ "$2" ] && printf '\033[9%sm%6s\033[0m%b%s\n' \
		"${accent:-4}" "$1" "${separator:- ~ }" "$2"
}

print os "$ID"
print sh "$SHELL"
print up "$up"
print kern "$(uname -r)"
print pkgs "$pkgs"
print term "$TERM"
col