#!/bin/bash

# Colors
RED='\033[0;31m'
LRED="\033[1;31m"
BLUE="\033[0;34m"
LBLUE="\033[1;34m"
GREEN="\033[0;32m"
LGREEN="\033[1;32m"
YELLOW="\033[1;33m"
CYAN="\033[0;36m"
LCYAN="\033[1;36m"
PURPLE="\033[0;35m"
LPURPLE="\033[1;35m"
BWHITE="\e[1m"
NC='\033[0m' # No Color


## Functions
shaStatic(){
#hashes date with SHA
  local charSize=20
  echo
  echo "${charSize} character password generated using SHA256 with date"
  echo "***************************************************"
  date +%s | sha256sum | base64 | head -c ${charSize}; echo
  echo "***************************************************"
}

shaWithNum(){
  #hashes date with SHA
  if [ $1 -ge 255 ];then
    echo
    echo "Error : $0 : Please choose a number lower than 255"
    echo

  else
    echo
    echo "$1 character password generated using SHA256 with date"
    echo "***************************************************"
    date +%s | sha256sum | base64 | head -c $1 ; echo
    echo "***************************************************"
  fi
}


leftHand(){
  echo
  echo "8 character password easy to type with left hand"
  echo "**************************************************"
  </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
  echo "**************************************************"
}

leftHandNum(){
  if [ $1 -ge 255 ];then
    echo
    echo "Error : $0 : Please choose a number lower than 255"
    echo

  else
    echo
    echo "$1 character password easy to type with left hand"
    echo "**************************************************"
    </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c$1; echo ""
    echo "**************************************************"
  fi
}


## Main
case "$1" in
  -cs | --char-size ) shaWithNum $2
  ;;

  -l | --left-hand ) leftHand
  ;;

  -lcs | --left-char-size ) leftHandNum $2
  ;;

  "") shaStatic
  ;;

  * | -h | --help ) echo
  echo "NAME"
  echo "    bashpass"
  echo
  echo "SYNOPSIS"
  echo "    bashpass [-h] [--help] [-cs <integer>] [-l] [-lcs <integer>]"
  echo
  echo "-cs <integer> | --char-size <integer>"
  echo "  specify password length"
  echo
  echo "-l | --left-hand"
  echo "  left handed password"
  echo
  echo "-lcs <integer> | --left-char-size <integer>"
  echo "  left hand password with length"
  echo
  ;;
esac