#!/bin/bash
cd `dirname $0`
clear

pkg_count=0

function NEW_PKG {
	pkg_count=$((pkg_count+1))
	pkg_name[${pkg_count}]=$1
	pkg_setup[${pkg_count}]=$2
	pkg_exec[${pkg_count}]=$3
}

#!!!!!!!!!!!!!!!!!!!!!!!! CREATE PACKAGES HERE !!!!!!!!!!!!!!!!!!!!!!!!
NEW_PKG "Update System" update update_dummy_cmd
NEW_PKG "GCC" gcc gcc
NEW_PKG "G++" g++ g++
NEW_PKG "Python 2.7.11" python2.7 python
NEW_PKG Make make make
NEW_PKG GDB gdb gdb
NEW_PKG "Clang 3.8.0 (LLVM)" clang-3.8 clang-3.8
NEW_PKG Git git git
NEW_PKG QEMU qemu-system-x86 qemu-system-x86_64
#!!!!!!!!!!!!!!!!!!!!!!!! CREATE PACKAGES HERE !!!!!!!!!!!!!!!!!!!!!!!!

printf "********* Kernel Development Toolkit Downloader *********\n"
printf "* The script will now download and install the following packages:\n"

for i in `seq 1 ${pkg_count}`;
do
	echo $i- ${pkg_name[$i]}
done

while true; do
	read -p "* Do you accept these changes [Y]/n: " yn
	case $yn in
		[Yy]* ) 
			############### Add repositories: ###############
			# Core components:
			sudo apt-get install software-properties-common
			# Clang:
			printf "\n***** Step 1: Adding repositories *****\n"
			printf "    1- Adding Clang repositories\n"
			wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -
			sudo add-apt-repository "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.8 main"
			
			############### Download and install packages: ###############
			printf "\n***** Step 2: Downloading and installing Packages *****\n"
			for i in `seq 1 ${pkg_count}`;
			do
				printf "   $i- Installing '${pkg_name[$i]}'\n"
				if hash ${pkg_exec[$i]} 2>/dev/null; then
					printf "    ** The program '${pkg_name[$i]}' is already installed\n"
				else
					if [ "${pkg_setup[$i]}" = "update" ] 
					then
						sudo apt-get ${pkg_setup[$i]}
					else
						sudo apt-get install ${pkg_setup[$i]}
					fi
					printf "    ** Done\n"
				fi
			done
			
			############### Install Kernel Source Code: ###############
			printf "\n***** Step 3: Installing Kernel Source Code *****\n"
			git clone https://github.com/miguelangelo78/Kernel-Test.git
			cd Kernel-Test
			git pull
			find . -type f -name *.sh -o -name *.pyc -exec chmod +x {} \;
			cd ..
			
			############### FINISHED ###############
			printf "\n***** Step 4: Success *****\n"
			printf "\n** Download and Installation complete! **\n"
			read -p "Press Enter key to exit..."
			
			break;;
		[Nn]* ) exit;;
		* ) echo "Please answer yes or no.";;
	esac
done