#!/bin/bash
# shellcheck disable=SC2139,SC2015,SC2142,SC2154
DEFAULT_ESP_DEVICE="/dev/ttyACM0"
DEFAULT_ESP_TARGET="esp32-p4"
DEFAULT_ESP_IDF_VERSION="v6.0"

# Reset environment variables and clean PATH
esp_env_unset(){
    hash -r;
    unset "$(compgen -v | grep -E "^(IDF_|ESP_)")" 
    NEWPATH=$(echo "$PATH" | tr ":" "\n" | grep -vE "/esp-idf-v[0-9]" | paste -sd:)
    export PATH=$NEWPATH
    # echo "PATH=$(echo $PATH)"
}

# For default ESP-IDF version (via your activate script)
esp_source_default() {
    esp_env_unset
    source "$HOME"/.local/bin/activate-espidf-${DEFAULT_ESP_IDF_VERSION}.bash  >/dev/null 2>&1 \
        && idf.py --version
}

# For specific ESP-IDF versions
esp_source_v5.3() {
    esp_env_unset
    source "$HOME"/.local/bin/activate-espidf-v5.3.bash >/dev/null 2>&1 \
        && idf.py --version
}

esp_source_v5.4() {
    esp_env_unset
    source "$HOME"/.local/bin/activate-espidf-v5.4.bash >/dev/null 2>&1 \
        && idf.py --version
}

esp_source_v6.0() {
    esp_env_unset
    source "$HOME"/.local/bin/activate-espidf-v6.0.bash >/dev/null 2>&1 \
        && idf.py --version
}

# create, build, flash, etc.
alias esp_menu="idf.py menuconfig"
alias esp_clean='idf.py fullclean'
alias esp_create='idf.py create-project'
alias esp_addlib='idf.py add-dependency'
alias esp_target="idf.py set-target $DEFAULT_ESP_TARGET"
alias esp_build='idf.py build'
alias esp_rebuild='idf.py fullclean build'
alias esp_flash="idf.py -p $DEFAULT_ESP_DEVICE flash"
alias esp_reflash="idf.py -p $DEFAULT_ESP_DEVICE fullclean build flash"
alias esp_reflashmon="idf.py -p $DEFAULT_ESP_DEVICE fullclean build flash monitor"
alias esp_mon="idf.py -p $DEFAULT_ESP_DEVICE monitor"

