if [ -f ~/.bashrc.local ]; then
  . ~/.bashrc.local
fi

if [ "$TERM" == "dumb" ]; then
  cd $PROJ
fi

alias bargs="function _bargs () { echo arg_one \$1 ; echo arg_two \$2 ; echo all_args \$* ; echo files_dirs * ; } ; _bargs"

alias ls="function _ls () { /bin/ls \$COLOR -h \$* ; } ; _ls"
alias la="function _la () { /bin/ls \$COLOR -lah \$* ; } ; _la"
alias lb="function _lb () { /bin/ls \$COLOR -la \$* ; } ; _lb"
alias lr="function _lr () { /bin/ls \$COLOR -laRh \$* ; } ; _lr"
alias lt="function _lt () { /bin/ls \$COLOR -lath \$* ; } ; _lt"
alias j="jobs -l"
alias mo="more"
alias m="make"
alias m0="make OPT=O0"
alias masan="make ASAN=1"
alias masan0="make ASAN=1 OPT=O0"
alias msan="echo the clang 3.5.0 static analyzer used by the Kiwi Debian 8 release gives false positives"
alias mi="make install"
alias mi0="make install OPT=O0"
alias mc="make clean"
alias mcd="make clean_dist"
alias md="make debug"
alias ml="make log"
alias msl="make slog"
alias ms="make status"
alias mr="make run"
alias muc="make update_check"
alias mfu="make force_update"
alias mdu="make dump"
alias mre="make restart"
alias mst="make stop"
alias msa="make start"
alias men="make enable"
alias mdi="make disable"
alias mn="make -n"
alias mk="make -k"
alias mw="make --dry-run --debug=a"
alias mgit="make git"
alias syl="make syslog"
alias d="dirs"
alias pd="pushd"
alias 2="pushd +2"
alias 3="pushd +3"
alias 4="pushd +4"
alias 5="pushd +5"
alias 6="pushd +6"
alias ic="ifconfig"
alias i="echo ==== interfaces; ic -a; echo ==== /etc/network/interfaces; cat /etc/network/interfaces; echo; echo ==== /etc/resolv.conf; cat /etc/resolv.conf"
alias e="ethtool eth0"
alias e10="ethtool -s eth0 speed 10 duplex full"
alias e100="ethtool -s eth0 speed 100 duplex full"
alias ip='ifconfig eth0 | grep inet'
alias mac='cat /sys/class/net/eth0/address'
alias df="/bin/df -h"
alias h="history"
alias z="suspend"
alias x="exit"
alias tr="traceroute"
alias al="alias"
alias soc="source ~/.profile"
alias pe="printenv"
alias cdp="cd \${PROJ}"
alias cd2="cd \${PROJ2}"
alias cd3="cd \${PROJ3}"
alias jc="journalctl"
alias log="jc | tail -200"
alias pubip="curl icanhazip.com; echo"
alias ident="curl icanhazip.com; echo"
alias py="python"
alias mosd="mkdir -p /media/sd_boot; mount /dev/mmcblk1p1 /media/sd_boot"
alias umsd="umount /media/sd_boot"
alias cdsd="cd /media/sd_boot"
alias mosdr="mkdir -p /media/sd_root; mount /dev/mmcblk1p2 /media/sd_root"
alias umsdr="umount /media/sd_root"
alias cdsdr="cd /media/sd_root"
alias sshrm="function _sshrm () { sudo ssh-keygen -R \$* ; ssh-keygen -R \$* ; } ; _sshrm"
alias d+="function _d+ () { dig +short +noedns \$* A ; dig +short \$* AAAA ; } ; _d+"
alias cata="tail -vn +1 *"
alias catav="tail -vn +1 */v"
alias du="/usr/bin/du -sh * | sort -h"
alias du.="/usr/bin/du -sh ."
alias dif="diff -br --exclude=.DS_Store --exclude=.git"
alias sha256sum="shasum -a 256"
alias sha="sha256sum"
alias sha256="sha256sum"

alias gr="grep \$COLOR"
alias g="function _g () { gr -riI --exclude-dir .git --exclude-dir ./web/pkgs_maps/leaflet/mapbox-gl --exclude \*.min.\* \$* . ; } ; _g"
alias gs="function _gs () { gr -rI --exclude-dir .git --exclude-dir ./web/pkgs_maps/leaflet/mapbox-gl --exclude \*.min.\* \$* . ; } ; _gs"
alias g.="function _gdot () { gr -iI \$* * ; } ; _gdot"
alias gg="function _gfile () { gr -iI \$* ; } ; _gfile"
alias gt="function _gtail () { tail -n 300 -f \$2 | gr -i --line-buffered \$1 ; } ; _gtail"
# note that only $* is required here (not \$*) perhaps due to use in built-in commands?
alias ff='function _ff () { export ffa=$* ; find . -name "*$ffa*" -print ; } ; _ff'

# file times in epoch seconds
alias lss="ls -lah --time-style=+%s"
alias dsec="function _dsec () { date --date=@\$* ; } ; _dsec"
alias dfsec="function _dfsec () { date --date=@\$* ; } ; _dfsec"

# which branch are we on?
alias gbr="git branch -a"
alias gurl="git config --get remote.origin.url"
alias gcl="git clean -fd"
alias gco="git checkout"
alias gpu="git pull -v"
alias gup="gcl; gco .; gpu"
alias gdi="git diff --no-color"
alias gst="git status"
alias gsh="git show --no-color"
alias grem="git remote -v"
alias gclone="function _gclone () { git clone https://github.com/jks-prv/\$1.git ; } ; _gclone"

# git commits
# current commit
alias gcom="gsh --oneline -s"
# list all commits <= current HEAD position
alias gcoms="git log --no-color --oneline"
# gco <sha>
# gco master

alias sc="echo systemctl: sctl scls=list_unit sclsa=list_all_units scs=service_status scsa/scst=start/stop scre=reload"
alias sctl="function _sys () { systemctl \$* ; } ; _sys"
alias scls="function _syg () { systemctl list-units | gr -i \$* ; systemctl list-unit-files | gr -i \$* ; } ; _syg"
alias sclsa="function _syg () { systemctl list-units ; systemctl list-unit-files ; } ; _syg"
alias scs="function _sys () { systemctl --lines=100 status \${*}.service ; } ; _sys"
alias scsa="function _sys () { systemctl --lines=100 start \${*}.service ; } ; _sys"
alias scst="function _sys () { systemctl --lines=100 stop \${*}.service ; } ; _sys"
alias scre="function _sys () { systemctl --lines=100 reload-or-restart \${*}.service ; } ; _sys"
alias sa="service --status-all"

alias pk="echo apt: s=search_available ls=list_installed i=install rm=remove ar=autoremove; echo apt: up=update upp=single_pkg ug=upgrade fug=full-upgrade c=clean sz=sizes f=which_pkg_has_file fu=file_update fi=files_installed co=cape_overlays"
alias pks="echo available pkgs:; apt-cache search"
alias pkls="echo installed pkgs:; dpkg -l | gr"
alias pkup="apt update"
# update(upgrade) single package
alias pkupp="apt install --only-upgrade"
alias pkug="apt -y upgrade"
alias pkfug="apt full-upgrade"
alias pki="apt -y install"
alias pkc="df; apt-get clean; echo; df"
alias pksz="dpkg-query -W -f='\${Installed-Size;8}\t\${Status;1}\t\${Package}\n' | gr -v '\\sd\\s' | sort -n | cut -f1,3-"
alias pkf="apt-file search"
alias pkfu="apt-file update"
alias pkfg="apt-file upgrade"
alias pkfi="dpkg -L"
alias pkrm="apt-get purge"
#alias pkrm="apt-get remove"
alias pkar="apt-get autoremove"
alias pkco="apt upgrade bb-cape-overlays"

# BBB
alias dog="echo Debian `cat /etc/debian_version`; more /etc/dogtag; uname -a"
alias tag=dog
alias slots7="cat /sys/devices/bone_capemgr.*/slots"
alias slots8="cat /sys/devices/platform/bone_capemgr/slots"
alias slots="cat /sys/devices/platform/bone_capemgr/slots"
alias unslot7="echo > /sys/devices/bone_capemgr.*/slots"
alias unslot8="echo > /sys/devices/platform/bone_capemgr/slots"
alias pins="more /sys/kernel/debug/pinctrl/44e10800.pinmux/pins"
alias pmux="more /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pins"
alias bbser="screen -h 1024 /dev/ttyUSB0 115200"
alias db="systemctl reload-or-restart dropbear.socket"
alias dk="diff -r . merge"

# KiwiSDR
alias cdk="cd ~/kiwi.config"
alias cdext="cd ~/extensions"
alias kd="cdp; m stop; touch ~root/.kiwi_down; m start"
alias ku="cdp; m stop; rm -f ~root/.kiwi_down; m start"
alias kk="killall -r -i -s 9 kiwi"
alias mu="make users"
alias ja="jq '.' /root/kiwi.config/admin.json"
alias jk="jq '.' /root/kiwi.config/kiwi.json"
alias jd="jq '.' /root/kiwi.config/dx.json"
alias scD="git clone https://github.com/jks-prv/Beagle_SDR_GPS.git"
alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
alias wk="json_pp -t dumper <~root/kiwi.config/kiwi.json | grep rx_name | urldecode"
alias status="function _status () { curl --connect-timeout 5 \${*}:8073/status ; } ; _status"
alias status80="function _status () { curl --connect-timeout 5 \${*}:80/status ; } ; _status"
alias geoloc="curl https://ipapi.co/json"
alias geoloc2="curl https://extreme-ip-lookup.com/json"
alias geoloc3="curl https://get.geojs.io/v1/ip/geo.json"
alias geolocip="function _geolocip () { curl https://extreme-ip-lookup.com/json/\$1 ; } ; _geolocip"
alias ipt="iptables -L"
alias iptc="iptables -D INPUT -j KIWI; iptables -F KIWI; iptables -X KIWI"

# sharing KiwiSDR sources with a development machine via NFS
# download NFS with command: "pki nfs-common"
alias nfs="mount -l -t nfs"
# mount read-only so any changes don't flow backwards to development machine sources!
#alias nfsup="mount -t nfs -o ro,proto=tcp,port=2049 dev_machine_name:path_to_Beagle_SDR_GPS /root/Beagle_SDR_GPS"
alias nfsdn="cd ~; umount -a -f -t nfs"
# on your development machine use commands like:
#alias	nfs		'sudo nfsd checkexports; sudo nfsd status; showmount -e; showmount -a'
#alias	nfsup	'sudo nfsd update; sudo nfsd enable; nfs'
# and an entry in /etc/exports on the development machine like:
#/path_to_kiwi_sources/Beagle_SDR_GPS -mapall=my_user_id -network 192.168.1.0 -mask 255.255.255.0

# KiwiSDR with gdb
alias gk="gdb ../build/kiwi.bin"
# aliases added to ~/.gdbinit
# gdb> asan // sets ASAN breakpoint
# gdb> ng   // no gps, leds
# gdb> k    // normal run

# KiwiSDR valgrind with gdb:
#   'vgh' alias below is a reminder of the sequence of commands
#	start valgrind with a "--vgdb-error=0" varient below, e.g. vggdb
#   it will wait for gdb to connect
#   start gdb; bload; vg; the "target remote | vgdb" from the vg will auto-connect to the valgrind pid
alias vgh="echo 'cdp; vggdb/vggdball [-gps etc]; in another window: cdp; gk, bload, vg, c'"
alias vg="valgrind -v --track-origins=yes --leak-check=full ../build/kiwi.bin"
alias vgd="valgrind -v --track-origins=yes --leak-check=full ../build/kiwi.bin -gps -leds"
alias vgall="valgrind -v --track-origins=yes --leak-check=full --show-leak-kinds=all ../build/kiwi.bin"
alias vggdb="valgrind -v --track-origins=yes --leak-check=full --vgdb-error=0 ../build/kiwi.bin"
alias vggdball="valgrind -v --track-origins=yes --leak-check=full --show-leak-kinds=all --vgdb-error=0 ../build/kiwi.bin"
