cputmp=$(( $(cat /sys/class/thermal/thermal_zone0/temp)/100 ));cputmp=$(echo "$cputmp" | sed 's/./&./2')
alias temp='echo -e "GPU: $( sudo vcgencmd measure_temp | cut -d'=' -f2)";echo -e "CPU: $(echo -e $cputmp )\x27C"'

alias txt='sudo nano'
alias run='sudo bash'
alias dump='sudo tee'
alias ll='ls -la --color=always'
alias utility='cd /opt/retropie/configs/all/CRT/bin/ScreenUtilityFiles/config_files;sudo nano utility.cfg'
alias wget='wget --no-check-certificate'

alias py='sudo python3'
alias autostart='sudo nano /opt/retropie/configs/all/autostart.sh'
alias retroarch='/opt/retropie/emulators/retroarch/bin/retroarch'
alias myip='hostname -I | cut -d" " -f1'
alias reload='clear && source /home/pi/.bashrc'
alias aliases='alias && cat /home/pi/.bash_aliases | grep -vi "^[#]" | grep -v aliases | grep "()" | cut -d" " -f1'


unalias ll

ll() {

  arg=${1:-$PWD}

  [ ! -d $arg ] && arg="$PWD" 
  [ $(ls -l $arg | wc -l) -lt 2 ] && ls -l $arg && return
  
  clear
  _ll_list "$arg" | less -EKXR
    
}

_ll_list() {
  local folder="$1"
  local abs_path="$(realpath "$folder")"
  echo -e "$abs_path:\n"
  count=$(ls -l | awk 'NR==1 {print $0"\n"}')

  ls -la --group-directories-first $folder \
  | awk -vdir="$folder" '{
    
    RESET="\033[0m";
    RED="\033[31m";
    RED="\033[31m";
    CYAN="\033[36m";
    WHITE="\033[37m";
 
    ROWCOLOR=WHITE;
 
    BGCOLOR="\033[40m\033[37m"
    DIRCOLOR="\033[40m\033[36m"

    fname=$9;
    sub(".\\/","",fname);

    if (NF > 9) {
      for (i=9+1; i<=NF; i++) {
        fname = fname" "$i;
      }
      fname = "\x27" fname "\x27";
    } else {
      fname=$9;
    }
     
    hidden=substr(fname,0,2);

    user=$3
    user == "root" ? user="su" : user=user;

    cmd = "stat -c \x27%a %n\x27 "dir"/"fname;
    cmd | getline statout
    close(cmd);

    split(statout,octal);
    rights=octal[1];

    type=substr($1,0,2);
    type=(type == "d" ? "D" : (hidden == "." ? hidden : type));
    type == "D" ? fname=fname "/" : fname=fname

    size=$5;

    if (size >= 1024 * 1024) {
      size /= (1024 * 1024);
      unit="M"
    } else if (size >= 1024) {
      size /= 1024;
      unit="K"
    } else {
      unit="B"
    }

    date_str = $6" "$7" "$8;
    cmd = "date -d \"" date_str "\" +%m-%d\ %R";

    cmd | getline date_formatted;
    close(cmd);
    cmd = "date -d \"" time_str "\" +%R";
    cmd | getline time_formatted;
    close(cmd);

    if (NR > 3) {
      type == "D" ? ROWCOLOR=DIRCOLOR : ROWCOLOR=BGCOLOR
      printf "%s %s %s %s %3.0f%s %s %s\n", ROWCOLOR, type, rights, date_formatted, size, unit, fname, RESET
    }
  }'
  echo -e "\n  $(find $PWD -maxdepth 1 -type f | wc -l) files.\n"
}

clocks() {
  printf "\nCLOCKS:\n\n"
  for src in arm core emmc uart v3d h264 isp pwm vec pixel dpi hdmi; do
    echo -e "$src: $(vcgencmd measure_clock $src)" | \
    awk -v OFS=\n -F':|=' '{
      name = $1;
      val = $3;
      val /= 1000;
      unit=" hz"

      unit=(val >= 10000 ? "Mhz" : (val >= 100 ? "Khz" : " hz" ))
      val >= 10000 ? val /= 1000 : val=val;

      cmd = "echo \"" val "\" | sed \x27s/./&./4\x27";
      cmd | getline val_form;
      close(cmd);

      printf "%s\t%8.2f %s\n", name, val_form, unit

   }'
done
printf "\n\n"
}

pyserial() {
  printf "$@" > /tmp/pyserial.fifo
}

doc() {
 local cmd=${1}
 local arg=${2}
 file="/home/pi/ADMIN/DOCS/$cmd.doc"

 eval "$cmd $arg" 2>&1 | sudo tee "$file" &>/dev/null
 sleep 1
 clear
 echo -e "$file contents:\n"
 cat $file
}

installer() {
 [ ! $# ] && return
 args="${@}"
 arg="$1"
 file="$2"
 logfile="/home/pi/ADMIN/.log/installer.log"
 arc_name='/home/pi/ADMIN/.install/install.zip'
 [ -f $arc_name ] && sudo cp $arc_name "$arc_name.bak"

 echo "args: $args"
 echo "arg: $arg"
 echo "file: $file"

 if [[ $arg == "add" ]]; then
  ( sudo 7z a -r -tzip -p1234 "$arc_name" "$file" && sudo 7z l "$arc_name" 2>&1 )> >(sudo tee $logfile)
 elif [[ $arg == del ]]; then
  ( sudo 7z d -r -p1234 "$arc_name" "$file" && sudo 7z l "$arc_name" 2>&1 )> >(sudo tee $logfile)
 elif [[ $arg == list ]]; then
  sudo 7z l "$arc_name"
 fi
 echo -e "\nDONE!\n\nOutput logged in \x27$logfile\x27"
}

upload() {
  expect /home/pi/ADMIN/CMD/FTP/sftp-upload.exp "$@"
}

download() {
  local url=${1}
  local dir=${2:-'/home/pi/downloads'}

  valid=$(wget --method=HEAD --no-check-certificate $url 2>&1 | cut -d' ' -f 3 | grep -xcm1 exists.) &>/dev/null

  clear
  echo -e "\nRequesting $url\n"
  sleep 1
  echo -e "\n$(date):\n" | sudo tee ~/ADMIN/log/download.log &>/dev/null
  if ! (( valid )); then
    echo -e "URL Invalid.\n" && return
  else
    echo -n "URL valid." && sleep 1 && echo -e "..downloading to:"
    wget -v --no-check-certificate -P $dir $url 2>&1 \
    | grep --line-buffered -A100 "Length:" \
    | awk '{$1=$1;print}' | cut -d'(' -f1 \
    | awk -vDIR="$dir" -F'\\% ' '{
        if (NR == 2) {
          n=split($0,A,"/");
          lastf = substr(A[n],0,length(A[n])-2);
          delimiter = "\\=";          
          print DIR"/"lastf
        } else {
          n=split($2, parts, delimiter);

          if (n >= 2 ) {
            split($0,fields); 
            split(fields[1],first,".");
            split(fields[2],second,"\\=");
             
            print "\nDONE! ("first[1]"in "second[2]")\n"
          }
        } \
      }' 
      #|& sudo tee -a ~/ADMIN/log/download.log 2>&1
  fi
}

exists() {
  [ -f "$@" ] && echo -e "\nfile \x27$@\x27 exists!\n" || echo -e "\nfile doesn't exist.\n"
}


play() {
  ffplay -nodisp -autoexit -loglevel quiet "$@"
}

img() {
  tty=$(tty)

  if [[ $tty == /dev/tty* ]]; then
    #echo "TTY!" && sleep 2
    sudo fbi -t 0 --once --noverbose "$@"
  elif [[ $tty == /dev/pts* ]]; then
    #echo "PTS!" && sleep 2
    sudo fbi -T 1 -d /dev/fb0 --once --noverbose "$@"
  fi
  reset
}
