#!/bin/zsh

error() {
    echo "Improper usage. To increase a value in a file, update [target_file] {+, -}[change]."
    echo "For example, to increase the volume by 5, use 'update volume +5'."
    echo "To decrease the brightness by 10, use 'update brightness -10'."
    exit 1
}

# Set up target file
get_target() {
    TARGET=$1

    if [[ $TARGET == "volume" ]]; then
      echo "/home/jashton/.config/xob/volume"

    elif [[ $TARGET == "brightness" ]]; then
      echo "/home/jashton/.config/xob/brightness"

    else
        echo "Invalid target. Please use 'volume' or 'brightness'."
        error
        exit 1
    fi
}

# Format change
get_change() {
    CHANGE=$1

    if [[ $CHANGE[1] == "+" ]]; then
        echo $CHANGE[2,-1]
        return ${CHANGE[2,-1]}
    elif [[ $CHANGE[1] == "-" ]]; then
        echo -$CHANGE[2,-1]
        return -${CHANGE[2,-1]}
    else
        echo "Invalid change. Please use '+' or '-'."
        error
    fi
}

update() {
    CHANGE=$1
    TARGET=$2
    TARGET_FILE=$(get_target "$TARGET")

    OLDNUM=`head $TARGET_FILE`
    NEWNUM=`expr $OLDNUM + $CHANGE`

    if [[ $NEWNUM -le 100 && $NEWNUM -ge 0 ]]; then
        sed -i "s/$OLDNUM/$NEWNUM/g" $TARGET_FILE

        if [[ $TARGET == "volume" ]]; then
            pamixer --set-volume $NEWNUM%

        elif [[ $TARGET == "brightness" ]]; then
            brightnessctl set $NEWNUM%

        else
            echo "Invalid target. Please use 'volume' or 'brightness'."
            error
        fi

        echo $NEWNUM >> ~/.config/xob/xobpipe
        exit 0
    else
        echo "Invalid value. Please use a number between 0 and 100."
        exit 1
    fi
}

# Check for proper number of arguments
if [[ $# -ne 2 ]]; then
    error
fi

TARGET=$1
CHANGE=$(get_change "$2")

# Set up xob
tail -f ~/.config/xob/xobpipe | xob -s $TARGET &

update "$CHANGE" "$TARGET" &
