#!/bin/zsh

grep -q "void" /etc/os-release || return

hashafter xi
hashafter xbps-remove


xq() {
	xbps-query -Rs "$@" | grep -v -- '-32bit'
}
xqn() {
	if [[ -z $1 || -n $2 ]]; then
		<<-HERE
		Usage: xqn NAME
		Search for NAME only in package names
		HERE
	else
		xbps-query -Rs $1 | awk "\$2 ~ /$1/ { print }"
	fi
}

alias xfiles="xbps-query -f"

xbps-install() {
	local logfile=$(mktemp)
	sudo script --return --quiet -c "/usr/bin/xbps-install $*" $logfile
	local ret=$?
	grep -oP ".*(?=: post-install message)" < $logfile \
		| ifne xargs -L 1 xbps-query -p install-msg
	hash -r
	return $ret
}

xupdate() {
	if [[ -z "$@" ]]; then
		xbps-install -Su
		if [[ $? == 16 ]]; then
			xbps-install -Syu xbps
			xupdate
		fi
	else
		xbps-install -SA "$@"
		xcheckupdates
	fi
}

xowner() {
	xbps-query -Ro "*${1}*"
}


sv() {
	command sv "$@"
	ret=$?
	if [[ "$1" == "up" ]]; then
		shift
		sleep 0.5
		command sv check "$@"
	fi
	return $ret
}

sv-manage() {
	local action service svdir
	zparseopts -D -E d:=dir -dir:=dir
	svdir=${dir[2]:-${SVDIR:-/var/service}}
	if [[ -z $1 ]]; then
		action=list
	else
		action=$1
		shift
	fi
	case "$action" in
		add)
			for service in "$@"; do
				ln -s ${SVDIR_TEMPLATES:-/etc/sv}/${service:s#/##} ${svdir}
			done
			;;
		remove|rm)
			for service in "$@"; do
				rm  ${svdir}/${service:s#/##}
			done
			;;
		list|ls)
			sv status ${svdir}/* | sed "
			s@${svdir}/@@
			s@run@\x1b[1;92mrun\x1b[0m@g
			s@down@\x1b[1;31mdown\x1b[0m@g
			" | column -t
	esac
}

# renamed package binaries
alias ts=moreutils_ts