#!/bin/bash
#  _     _ _
# | |   (_) |__  _ __ __ _ _ __ _   _
# | |   | | '_ \| '__/ _` | '__| | | |
# | |___| | |_) | | | (_| | |  | |_| |
# |_____|_|_.__/|_|  \__,_|_|   \__, |
#                               |___/
#
# by Benjamin Palko [based on Stephan Raabe] (2023)
# -----------------------------------------------------

# ------------------------------------------------------
# Function: Is package installed
# ------------------------------------------------------
_isInstalledPacman() {
	package="$1"
	check="$(sudo pacman -Qs --color always "${package}" | grep "local" | grep "${package} ")"
	if [ -n "${check}" ]; then
		echo 0 #'0' means 'true' in Bash
		return #true
	fi
	echo 1 #'1' means 'false' in Bash
	return #false
}

_isInstalledYay() {
	package="$1"
	check="$(yay -Qs --color always "${package}" | grep "local" | grep "\." | grep "${package} ")"
	if [ -n "${check}" ]; then
		echo 0 #'0' means 'true' in Bash
		return #true
	fi
	echo 1 #'1' means 'false' in Bash
	return #false
}

# ------------------------------------------------------
# Function Install all package if not installed
# ------------------------------------------------------
_installPackagesPacman() {
	toInstall=()
	for pkg; do
		if [[ $(_isInstalledPacman "${pkg}") == 0 ]]; then
			echo ":: ${pkg} is already installed."
			continue
		fi
		toInstall+=("${pkg}")
	done

	if [[ "${toInstall[@]}" == "" ]]; then
		# echo "All pacman packages are already installed.";
		return
	fi

	# printf "Package not installed:\n%s\n" "${toInstall[@]}";
	sudo pacman --noconfirm -S "${toInstall[@]}"
}

_installPackagesYay() {
	toInstall=()
	for pkg; do
		if [[ $(_isInstalledYay "${pkg}") == 0 ]]; then
			echo ":: ${pkg} is already installed."
			continue
		fi
		toInstall+=("${pkg}")
	done

	if [[ "${toInstall[@]}" == "" ]]; then
		# echo "All packages are already installed.";
		return
	fi

	# printf "AUR packags not installed:\n%s\n" "${toInstall[@]}";
	yay --noconfirm -S "${toInstall[@]}"
}
