#! /bin/bash

##################################################################################################
##												##
##	 searchpkg - script that allows the user to search and download packages from		##
##			 the official BlueWhite64 Linux repository				##
##												##
##					--- AUTHOR ---						##
##				danix < danix@danixland.net >					##
##												##
##												##
##			BROUGHT TO YOU UNDER THE TERMS OF THE GNU GPL v2			##
##												##
##################################################################################################




###################
#   EXIT STATUS   #
###################
E_NOSEARCHSTRING=171
E_NOPKGFOUND=172
E_UNKNRESP=173
E_PKGDIRFULL=174
_QUITBYUSER=180

####################
#     VARIABLES    #
####################
distro_version='12.2'
repo='http://data.linux64packages.net:8080/bluewhite64-'
workdir='/tmp/searchpkg'
pkgdir=${workdir}/tgz
filelist='FILELIST.TXT'
good_filelist='filelist-formatted.txt'

### CHECK IF A SEARCHSTRING IS GIVEN ###
if [[ ! $1 ]];then
	echo "you didn't specify a string to search, exiting"
	exit $E_NOSEARCHSTRING
fi

### CHECK IF WORKDIR IS EMPTY OR THERE ARE ALREADY DOWNLOADED TGZs
if [[ -d $workdir ]];then
	if [ `ls $pkgdir |grep 'tgz'` ];then
		echo "packages found in $pkgdir"
		echo "remove them before running again `basename $0`"
		exit $E_PKGDIRFULL
	else
		rm -rf $workdir
		mkdir -p $workdir
	fi
else
	mkdir -p $workdir
fi

##########################
##			##
##	LET'S BEGIN	##
##			##
##########################
cd $workdir
# DOWNLOADING THE FILELIST AND FORMATTING IT
wget ${repo}${distro_version}/${filelist}
cat $filelist | tr -s ' ' "\n" | grep ".tgz" > $good_filelist

# SEARCHING THE STRING PASSED TO THE SCRIPT
searched_pkg=$(grep -i "$1" $good_filelist)
if [[ ! $searched_pkg ]];then
	echo "no packages found matching $1, exiting" # NO PACKAGES FOUND IN THE LIST... COMPILE TIME :)
	exit $E_NOPKGFOUND
else
	is_inst=$(ls /var/log/packages |grep -i $1 2>/dev/null) # CHECK IF THE PACKAGE IS CURRENTLY INSTALLED
	if [[ ! $is_inst ]];then
		echo "there are no installed packages matching your searchterm, would you like to download it?" # IF NOT ASK IF THE USER WANTS TO DL IT
		read response
		case $response in
			y | yes | Y | YES | S | SI | si | s )	wget -P $pkgdir ${repo}${distro_version}/$searched_pkg # IF HE DOES PUT IT IN THE PKGDIR
								echo "the package is located under $pkgdir"
				;;
			n | no | N | NO )	echo "exiting by user response" # IF HE DOESN'T ... QUIT!
						exit $_QUITBYUSER
				;;
			* )	echo "unknown response, exiting " # IF HE DOESN'T KNOW WHAT TO WRITE, ASSUME IT IS "NO"
				exit $E_UNKNRESP
		esac
	else
		echo "Those packages matches your search \"$1\":"	# SHOW THE USER WHICH TGZ ARE ALREADY INSTALLED AND
		ls /var/log/packages | grep -i $1			# MATCHES HIS SEARCHSTRING
	fi
fi
exit # BYE BYE

