#!/usr/bin/env bash
SCHEME=$1
TEMPLATE=$2

if [ -z "$MO_PATH" ]; then
	MO_PATH="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/mo/mo"
fi

source $MO_PATH

rgb_r() {
	printf "$((0x${MO_FUNCTION_ARGS[0]:0:2}))"
}

rgb_g() {
	printf "$((0x${MO_FUNCTION_ARGS[0]:2:2}))"
}

rgb_b() {
	printf "$((0x${MO_FUNCTION_ARGS[0]:4:4}))"
}

rgb() {
	rgb_r; printf " "
	rgb_g; printf " "
	rgb_b; printf " "
}

clamp() {
	if [[ $1 -lt 0 ]]; then
		printf "0"
	else
		if [[ $1 -gt 255 ]]; then
			printf "255"
		else
			printf "%s" "$1"
		fi
	fi
}

lighten() {
	mod="${MO_FUNCTION_ARGS[1]}"
	parts=("$(rgb_r)" "$(rgb_g)" "$(rgb_b)")
	vars=""
	for part in "${parts[@]}"; do
		let var=$part+$mod
		vars=$vars"$(clamp "$var") "
	done

	printf "%02x%02x%02x" $vars
}

darken() {
	MO_FUNCTION_ARGS[1]="-${MO_FUNCTION_ARGS[1]}"
	lighten
}

set -a # All variables after this will be exported
source $SCHEME
mo "$TEMPLATE"