#!/bin/bash

function kube_gbt(){
    export GBT_CARS='OS, Custom4, Git, Kubectl, Dir, Custom1, Custom2, Custom3, PyVirtEnv, Status, Sign'
}

function k3sudo(){
    # create a passwordless sudo rule on target 
    # usage: k3sudo [add, del] <target ip/hostname>
    if [[ "$1" == "add" ]];then
        ssh -t $2 "hostname --long; echo \"$USER ALL=(ALL) NOPASSWD: ALL\" | sudo tee /etc/sudoers.d/k3sup"
    elif [[ "$1" == "del" ]];then
        ssh $2 sudo rm /etc/sudoers.d/k3sup
    else
        echo "Error: usage: k3sudo [add, del] <target ip/hostname>"
    fi
}

function pc(){
    # use pass and copy to clipboard
    pass -c1 "$@"
}
complete -o filenames -F _pass pc



function watermark(){
    # Add watermark text to image (ImageMagick depentant)
    # $1 = source file
    # $2 = watermark text
    # $3 = destination file
    convert -density 150 -fill  "rgba(255,0,0,0.25)"  -gravity Center -pointsize 80 -draw "rotate -45 text 0,0 \"$2\""  "$1" "$3"
}

function reset_evolution() {
    # Reset evolution calendar factory
    # When it hangs connecting to EWS calendar outlooko365
    EWS_DEBUG=2 /usr/lib/evolution-data-server/evolution-calendar-factory -w
}

function salt() {
    if [[ "$1" == "state.apply" ]]; then
        sudo salt-call --local --file-root "$HOME/salt/states" --pillar-root "$HOME/salt/pillars" "$@" pillar="{username: $USER}"
    else 
        sudo salt-call --local --file-root "$HOME/salt/states" --pillar-root "$HOME/salt/pillars" "$@"
    fi
}

function pw(){
    FILE="$1"

    [[ -z "$PWHOME" ]] && printf "\$PWHOME not set\n"  && return

    [[ -z "$FILE" ]] && FILE="web.gpg"
    
    if [[ ! "${FILE: -4}" == ".gpg" ]];then
        FILE="${FILE}.gpg"
    fi
    cd "$PWHOME"
    vi "$FILE"

    cd "$OLDPWD"
}

_pw_completion()
{
    local cur prev suggestions
    [[ -z "$PWHOME" ]] && return
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    cd "$PWHOME"
    suggestions="$(ls *.gpg)"
    cd "$OLDPWD"
    if [[ "$prev" != "pw" ]];then
        COMPREPLY=()
    else
        COMPREPLY=( $(compgen -W "${suggestions}" -- ${cur}) )
    fi
}
complete -F _pw_completion pw

function doh()
{
    local options
    options=(start stop restart status)
    if [[ ! " ${options[@]} " =~ " ${1} " ]]; then
        echo "wrong option, valid: ${options[@]}"
        return
    fi
    if [[ "$1" == "status" ]]; then
        systemctl status local-doh-proxy
    else
        sudo systemctl "$1" local-doh-proxy
    fi
}

function copy_k8s_token(){
    grep "id-token" ~/.kube/config  | awk '{print $2}' | xclip -sel clip
}

function ip_to_hex(){
    IFS=. read oct1 oct2 oct3 oct4 <<< "$1"
    printf '0x%02x%02x%02x%02x\n' $oct1 $oct2 $oct3 $oct4
}

function salt-call(){
  sudo salt-call --local "$@"
}


function ww(){
    local selected_wiki
    selected_wiki="$1"

    case $1 in
        SUSE|suse|S|s|2)
            vim -c "normal 2 ww"
            ;;
        Private|private|p|3)
            vim -c "normal 3 ww"
            ;;
        *)
            vim -c "normal 1 ww"
            ;;
    esac
}

function ssh(){
    for arg in "$@"
    do
        case "$arg" in
            -A)
                read -t 5 -n 1 -s -r -p "Consider to use -o ProxyJump instead! Press 'y' to continue with -A" answer
                printf "\n"
                if [[ "${answer,,}" != "y" ]]; then
                    return 1
                fi
        esac
    done
    /usr/bin/ssh "$@"
}

