#!/bin/bash

# Find apt packages and pkg-config flags with fuzzy finding
# Requires fzf to be installed
# Valtteri Koskivuori (c) 2023

if [[ ! -f $(which fzf) ]]; then
	echo "This script depends on fzf"
	exit 1
fi

function y_n {
	while true; do
		read -p "$* [y/n]" yn
		case $yn in
			[Yy]*) return 0 ;;
			[Nn]*) return 1 ;;
		esac
	done
}

case "$1" in
	"apt") CMD='apt-cache pkgnames' ;;
	"pkg") CMD='pkg-config --list-all' ;;
esac

if [[ "$CMD" == "" ]]; then
	return 0
fi

function install {
	apt show "$1" && y_n "Install?" && sudo apt install "$1" && dpkg -L "$1"
}

function pkgshow {
	libs=$(pkg-config --libs "$1")
	cflags=$(pkg-config --cflags "$1")
	if [[ "$libs" != "" ]]; then
		echo -n "libs: " && echo "$libs"
	fi
	if [[ "$cflags" != "" ]]; then
		echo -n "cflags: " && echo "$cflags"
	fi
}

pkg=$($CMD | sort | fzf)
if [[ "$pkg" != "" ]]; then
	case "$1" in
		apt) install "$pkg" ;;
		pkg) pkgshow $(echo "$pkg" | awk '{ print $1 }') ;;
	esac
	#y_n "Install?" && sudo apt install "$pkg" && dpkg -L "$pkg"
fi
