2
0
Fork 0
mirror of https://github.com/alexanderepstein/Bash-Snippets synced 2018-11-08 02:59:35 +01:00
Bash-Snippets/bash-snippets.sh

76 lines
2 KiB
Bash
Raw Normal View History

#!/bin/env bash
# Author: Navan Chauhan and Alexander Epstein
currentVersion="1.21.0"
configuredClient=""
## This function determines which http get tool the system has installed and returns an error if there isnt one
getConfiguredClient()
{
if command -v curl &>/dev/null; then
configuredClient="curl"
elif command -v wget &>/dev/null; then
configuredClient="wget"
elif command -v http &>/dev/null; then
configuredClient="httpie"
elif command -v fetch &>/dev/null; then
configuredClient="fetch"
else
echo "Error: This tool reqires either curl, wget, httpie or fetch to be installed." >&2
return 1
fi
}
httpGet()
{
case "$configuredClient" in
curl) curl -A curl -s "$@" ;;
wget) wget -qO- "$@" ;;
httpie) http -b GET "$@" ;;
fetch) fetch -q "$@" ;;
esac
}
grablatestversion()
{
repositoryName="Bash-Snippets"
githubUserName="alexanderepstein"
latestVersion=$(httpGet https://api.github.com/repos/$githubUserName/$repositoryName/tags | grep -Eo '"name":.*?[^\\]",'| head -1 | grep -Eo "[0-9.]+" ) #always grabs the tag without the v option
}
checkInternet()
{
httpGet github.com > /dev/null 2>&1 || { echo "Error: no active internet connection" >&2; return 1; } # query github with a get request
}
header(){
COLUMNS=$(tput cols)
title="Bash Snippets"
installver="Installed Version : $currentVersion"
latestver="Latest Version : $latestVersion"
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"
printf "%*s\n" $(((${#installver}+$COLUMNS)/2)) "$installver"
printf "%*s\n" $(((${#latestver}+$COLUMNS)/2)) "$latestver"
}
installationcheck(){
cd /usr/local/bin
for f in cheat cloudup crypt cryptocurrency currency geo lyrics meme movies newton qrify short siteciphers stocks taste todo transfer weather ytview
do
if [ -e $f ]
then
echo "$f is installed"
else
echo "$f is not installed"
fi
done
}
checkInternet
getConfiguredClient
grablatestversion
header
installationcheck