# vim: set ft=zsh :
# `$HOME/bin/start-agent`
SSH_ENV="$HOME/.ssh/agent-environment"

function escapeStr {
  if [ -z "$1" ]; then
    echo "usage: escapeStr <string>"
    return 1
  fi 
  echo $1 | sed -r 's/([\$"])/\\\1/g'
}

function start_agent {
    echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

{{ if .shell.ssh_agent }}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
{{ end }}

function envf {
    if [ ! -f "$1" ]; then
        echo "File $1 does not exist"
        exit 1
    fi

    export $(cat $1 | grep -v '^#' | xargs)
}

function ttySize {
  echo "-e COLUMNS=$(tput cols) -e LINES=$(tput lines)"
}

export HISTORY_SUBSTRING_SEARCH_PREFIXED=1
export GOPATH="$HOME/go"
export GOROOT="$HOME/apps/go"
export NODE_ROOT="$HOME/apps/node"

export PATH="$GOPATH/bin:$GOROOT/bin:$NODE_ROOT/bin:${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

if [ -f "$HOME/.cargo/env" ]; then
  . "$HOME/.cargo/env"
fi

if [ -d "$HOME/bin" ]; then
  export PATH="$HOME/bin:$PATH"
fi

if [ -d "$HOME/.local/bin" ]; then 
  export PATH="$PATH:$HOME/.local/bin"
fi

function ln-image-tags {
  if [ -z "$1" ]; then
    echo "usage: ln-image-tags <image-name>"
    exit 1
  fi

  curlie -L https://registry.lawsnote.com/v2/$1/tags/list
}

function ln-save-image {
  if [ -z "$1" ]; then
    echo "usage: ln-save-image <image-name:tag>"
    return 1 
  fi

  docker-save --rm -p -o . -i registry.lawsnote.com/$1
}

function save-image {
  if [ -z "$1" ]; then
    echo "usage: save-image <image-name>"
    return 1 
  fi
  tag=$(ln-image-tags "$1" | jq -c -r 'del(.tags[] | select(. == "latest")) | .tags | sort | last') || return 1
  ln-save-image "$1:$tag"
}

function minio-size {
  if [ -z "$1" ]; then 
    echo "usage: minio-size <alias or alias/bucket-path>"
    return 1
  fi

  mc ls -r --json $1 | jq -s 'map(.size) | add' | numfmt --to=iec-i --suffix=B --padding=7
}

function zfs-usage {
  awk '/^size/ { print $1 " " $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
}
