#!/bin/bash
#
##########################
# USA Linux Users Group  #
# http://www.usalug.org  #
# http://bashscripts.org #
##########################

#######################################################
#     baps - (B)(A)sh (P)honebook (S)cript            #
#######################################################
#                                                     #
#                                                     #
#    FILE: baps                                       #
# VERSION: See variable below                         #
#    DATE: See variable below                         #
# LICENSE: GPL                                        #
#  AUTHOR: Crouse - Please visit bashscripts.org      #
#                   and usalug.org                    #
#                                                     #
#                                                     #
#######################################################

######################
# Start of Variables #
######################
#
#
#########################################################
                                                       ##
baps_version="0.2"                                     ##
revision_date="Modified Sept 9th, 2006"                ##
author="Created by: Dave Crouse"                       ##
                                                       ##
#########################################################
#
#
######################
# End of Variables   #
######################

mkdir -p ~/.baps; touch ~/.baps/phone.data;
touch ~/.baps/temp.data;
cat /dev/null > ~/.baps/temp.data;


headerfile ()
{
clear;
echo "*****************************************************"; 
echo "*         (B)(A)sh (P)honebook (S)cript             *";
echo "*****************************************************"; 
echo " ";
echo "   The results returned for a search of: $searchforthis" ;
echo "     ______________________________________";
echo " ";
sort -d ~/.baps/temp.data | nl -ba ;
echo "     ______________________________________";
echo "";
}

mainmenu ()
{
menu="     s)earch a)dd  r)emove  e)xit"
while true; do 

headerfile; 
echo -e "$menu"
echo "";
read -p "Please choose one of the options above : " option
 
 case $option in
      s)   searchrecords; ;;
      a)   addrecord; ;;
      r)   removerecord; ;;	 
      e) exit; ;;


       # help)   helpfile ; ;;
       print) sort -d ~/.baps/phone.data | nl -ba | lpr ; ;;
       list)  listallrecords; ;;
      alias)  echo "alias phonebook='sh $PWD/baps.sh'" >> ~/.bashrc; ;;
      clear) rm ~/.baps/temp.data; ;;           
      erase) erasephonebook ;;     
      *)   echo "Sorry, that isn't an option, try again. "; sleep 2;  ;;
   esac
done; 
}

addrecord ()
{
clear; 
echo "*****************************************************"; 
echo "*         (B)(A)sh (P)honebook (S)cript             *";
echo "*****************************************************"; 
read -p "ADDING RECORD: Enter Name " name;
read -p "ADDING RECORD: Enter Phone Number " number;
entry="$name $number"
echo $entry >> ~/.baps/phone.data
echo "Record Added: $entry"; sleep 1;

}

searchrecords ()
{
cat /dev/null > ~/.baps/temp.data
  read -p "Search for : " searchforthis
     if [[ $searchforthis != "" ]]
      then
	grep -i "$searchforthis" ~/.baps/phone.data > ~/.baps/temp.data
	headerfile
      else
        echo ""
	echo "Sorry, you must enter something to search for!"
	read -p "Hit any key to continue. " temp
     fi
}

erasephonebook ()
{
read -p "$USER are you sure you want to erase the entire phone directory ? y/n: " reallycontinue
if [ "$reallycontinue" = "y" ]
   then
   cp ~/.baps/phone.data ~/.baps/phone.data~~
   rm ~/.baps/phone.data; echo "!! Erasing Entire Directory !!" ; sleep 1;
   rm ~/.baps/temp.data;
fi
}

removerecord ()
{
touch ~/.baps/temp2.data; cat /dev/null > ~/.baps/temp2.data;
sort -d ~/.baps/phone.data > ~/.baps/temp2.data
mv ~/.baps/temp2.data  ~/.baps/phone.data
clear;
echo "*****************************************************"; 
echo "*         (B)(A)sh (P)honebook (S)cript             *";
echo "*****************************************************"; 
echo "    ~~~~~~~~ Removing Record ~~~~~~~~"; 
echo " ";
echo "     ______________________________________";
echo " Line Number   | Record";
nl -ba ~/.baps/phone.data
echo "     ______________________________________";
echo " ";
echo "    ~~~~~~~~ Removing Record ~~~~~~~~"; 
     read -p "Enter the line number of the record you would like to delete : " removeline;
     if [[ $removeline != "" ]]
     then
         cat /dev/null > ~/.baps/temp2.data;
         cat ~/.baps/phone.data | sed ''$removeline'd' > ~/.baps/temp2.data;
         mv ~/.baps/temp2.data ~/.baps/phone.data
	 echo "Record Removed!" ; sleep 1;
     fi
}

listallrecords ()
{
clear; sort -d ~/.baps/phone.data | nl -ba | less ; 
}

###########################
# Program run starts here #
###########################
mainmenu
exit 0
