Bash-Snippets/install.sh

132 lines
3.6 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Author: Alexander Epstein https://github.com/alexanderepstein
2018-10-20 03:19:55 +02:00
currentVersion="1.22.1"
declare -a tools=(bash-snippets cheat cloudup crypt cryptocurrency currency geo lyrics meme movies newton pwned qrify short siteciphers stocks taste todo transfer weather ytview)
declare -a extraLinuxTools=(maps)
declare -a extraDarwinTools
usedGithubInstallMethod="0"
2017-07-26 20:27:17 +02:00
prefix="/usr/local"
askInstall()
{
read -p "Do you wish to install $1 [Y/n]: " answer
answer=${answer:-Y}
2017-07-26 20:18:59 +02:00
if [[ "$answer" == [Yy] ]]; then
cd $1 || return 1
echo -n "Installing $1: "
chmod a+x $1
cp $1 /usr/local/bin > /dev/null 2>&1 || { echo "Failure"; echo "Error copying file, try running install script as sudo"; exit 1; }
echo "Success"
cd .. || return 1
fi
}
updateTool()
{
2017-07-26 20:18:59 +02:00
if [[ -f /usr/local/bin/$1 ]]; then
usedGithubInstallMethod="1"
cd $1 || return 1
echo -n "Installing $1: "
chmod a+x $1
cp $1 /usr/local/bin > /dev/null 2>&1 || { echo "Failure"; echo "Error copying file, try running install script as sudo"; exit 1; }
echo "Success"
cd .. || return 1
fi
}
2017-07-08 08:40:29 +02:00
extraUpdateTool()
{
2017-07-26 20:18:59 +02:00
if [[ -f /usr/local/bin/$1 ]]; then
usedGithubInstallMethod="1"
cd extras || return 1
cd $2 || return 1
cd $1 || return 1
echo -n "Installing $1: "
chmod a+x $1
cp $1 /usr/local/bin > /dev/null 2>&1 || { echo "Failure"; echo "Error copying file, try running install script as sudo"; exit 1; }
echo "Success"
cd .. || return 1
cd .. || return 1
cd .. || return 1
fi
}
singleInstall()
{
cd $1 || exit 1
echo -n "Installing $1: "
chmod a+x $1
cp $1 $prefix/bin > /dev/null 2>&1 || { echo "Failure"; echo "Error copying file, try running install script as sudo"; exit 1; }
echo "Success"
cd .. || exit 1
}
2017-07-08 08:40:29 +02:00
copyManpage()
{
2017-08-02 03:16:27 +02:00
manPath="$prefix/share/man/man1"
if [ -f "$prefix/man/man1/bash-snippets.1" ]; then rm -f "$prefix/man/man1/bash-snippets.1"; fi
2017-07-26 20:18:59 +02:00
cp bash-snippets.1 $manPath 2>&1 || { echo "Failure"; echo "Error copying file, try running install script as sudo"; exit 1; }
2017-07-08 08:40:29 +02:00
}
response=$( echo "$@" | grep -Eo "\-\-prefix")
2017-07-26 20:18:59 +02:00
if [[ $response == "--prefix" ]]; then
2017-08-01 16:49:28 +02:00
prefix=$(echo -n "$@" | sed -e 's/--prefix=\(.*\) .*/\1/' | cut -d " " -f 1)
2017-08-02 03:16:27 +02:00
mkdir -p $prefix/bin $prefix/share/man/man1
if [[ $2 == "all" ]];then
for tool in "${tools[@]}"; do
singleInstall $tool || exit 1
done
else
for tool in "${@:2}"; do
singleInstall $tool || exit 1
done
fi
copyManpage || exit 1
elif [[ $# == 0 ]]; then
2017-07-26 20:18:59 +02:00
for tool in "${tools[@]}"; do
askInstall $tool || exit 1
done
2017-07-08 08:40:29 +02:00
copyManpage || exit 1
elif [[ $1 == "update" ]]; then
echo "Updating scripts..."
2017-07-26 20:18:59 +02:00
for tool in "${tools[@]}"; do
updateTool $tool || exit 1
done
2017-07-26 20:18:59 +02:00
if [[ $(uname -s) == "Linux" ]]; then
for tool in "${extraLinuxTools[@]}"; do
extraUpdateTool $tool Linux || exit 1
done
fi
if [[ $(uname) == "Darwin" ]];then
2017-07-26 20:18:59 +02:00
for tool in "${extraDarwinTools[@]}"; do
extraUpdateTool $tool Darwin || exit 1
done
fi
2017-07-26 20:18:59 +02:00
if [[ $usedGithubInstallMethod == "1" ]]; then
copyManpage || exit 1
else
echo "It appears you have installed bash-snippets through a package manager, you must update it with the respective package manager."
2017-08-02 05:52:28 +02:00
exit 1
2017-07-26 20:18:59 +02:00
fi
elif [[ $1 == "all" ]]; then
for tool in "${tools[@]}"; do
singleInstall $tool || exit 1
done
2017-07-08 08:40:29 +02:00
copyManpage || exit 1
else
singleInstall $1 || exit 1
2017-07-08 08:40:29 +02:00
copyManpage || exit 1
fi
echo -n "( •_•)"
sleep .75
echo -n -e "\r( •_•)>⌐■-■"
sleep .75
echo -n -e "\r "
echo -e "\r(⌐■_■)"
sleep .5
echo "Bash Snippets version $currentVersion"
echo "https://github.com/alexanderepstein/Bash-Snippets"