#!/bin/bash

# cavactl - cava script for Mabox
CFGFILE=~/.config/cava/config

reload_config() {
pkill -USR1 cava	
}

reload_colors() {
pkill -USR2 cava > /dev/null 2>&1	
}
mode() {
		case "$1" in
		solid) sd ".*gradient .*" "gradient = 0" ${CFGFILE};;
		gradient) sd ".*gradient .*" "gradient = 1" ${CFGFILE};;
		esac
		reload_colors
}

foregroundcolor(){
	sd ".*foreground .*" "foreground = '${1}'" ${CFGFILE}
}

foreground() {
sd ".*foreground .*" "foreground = '${1}'" ${CFGFILE}
sd ".*gradient .*" "gradient = 0" ${CFGFILE}
reload_colors
}
gradientcolors() {
		n=1
for i in $(pastel gradient -n 8 ${1} ${2}|pastel format hex)
    do
        sd ".*gradient_color_${n}.*" "gradient_color_${n} = '${i}'" ${CFGFILE}
        ((n++)) 
    done
}
gradient() {
	n=1
for i in $(pastel gradient -n 8 ${1} ${2}|pastel format hex)
    do
        sd ".*gradient_color_${n}.*" "gradient_color_${n} = '${i}'" ${CFGFILE}
        ((n++)) 
    done
	
sd ".*gradient .*" "gradient = 1" ${CFGFILE}
sd ".*gradient_count .*" "gradient_count = 8" ${CFGFILE}
reload_colors
}
grad_from() {
  read GR_TO <<< "$(grep '.*gradient_color_8 ' ${CFGFILE} | cut -d"'" -f2)"
  gradient "$1" "${GR_TO}"
}
grad_to() {
  read GR_FROM <<< "$(grep '.*gradient_color_1 ' ${CFGFILE} | cut -d"'" -f2)"
  gradient "${GR_FROM}" "$1" 
}

bar_width () {
sd ".*bar_width .*" "bar_width = ${1}" ${CFGFILE}	
reload_config
}


bar_spacing() {
sd ".*bar_spacing .*" "bar_spacing = ${1}" ${CFGFILE}
reload_config
}







case "$1" in
	mode) mode "$2";;
	foregroundcolor) foregroundcolor "$2";;
	foreground) foreground "$2";;
	gradientcolors) gradientcolors "$2" "$3";;
	gradient) gradient "$2" "$3";;
	grad_from) grad_from "$2";;
	grad_to) grad_to "$2";;
	reload) reload_config;;
	reload_colors)reload_colors;;
	bar_width)bar_width "$2";;
	bar_spacing)bar_spacing "$2";;
	
	*):;;
esac