#!/bin/sh
if [ "$1" = fmt ]; then
	# If the list format changes, change the fmt
	if [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then
		echo 2
	else
		echo ""
	fi
else
	# Keep the sort order the same at all times.
	LC_COLLATE=C
	export LC_COLLATE
	unset LC_ALL

	# Output to stdout a *sorted* list of all currently installed 
	# (or removed but still with config-files) packages, in the
	# format "package version\n" (or something similar).
	if [ "$LOWLEVEL_PACKAGE_MANAGER" = pkg_install ]; then
		pkg_info -a -I | awk '{print $1}' | sed -e 's|\(.*\)-|\1 |' | sort
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then
		dpkg-query -W -f '${Status}\t${Package} ${Version} ${Architecture}\n' | \
			/usr/bin/egrep '(ok installed|ok config-files)' | cut -f2,3
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = rpm ]; then
		rpm -qa --qf "%|epoch?{%{epoch}}:{0}|:%{name}-%{version}-%{release}.%{arch}\n" | sort
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = pacman ]; then
		pacman -Q
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = pacmatic ]; then
		pacmatic -Q
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = pkgng ]; then
		pkg info -E "*"
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = apk ]; then
		apk info -v | sort
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = xbps ]; then
		xbps-query -l | awk '{print $2}' | sed -r 's/-([^-]+)$/ \1/g;'
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = qlist ]; then
		qlist -ICv
	elif [ "$LOWLEVEL_PACKAGE_MANAGER" = cave ]; then
		cave print-packages -r installed
	fi
fi
