Adding description information. Added print message function for fancy colors in the output.

This commit is contained in:
Micheal Quinn 2019-08-11 15:33:42 -05:00
parent e7d6d096a8
commit 2c2920eb9c
No known key found for this signature in database
GPG Key ID: 0E7217F3C30BA059
1 changed files with 84 additions and 43 deletions

View File

@ -3,22 +3,64 @@
# #
# FILE: default.txt.sh # FILE: default.txt.sh
# #
# USAGE: ./default.txt.sh # USAGE: curl https://getcroc.schollz.com | bash
# OR
# wget -qO- https://getcroc.schollz.com | bash
# #
# DESCRIPTION: # DESCRIPTION: croc Installer Script.
#
# This script installs croc into a specified prefix.
# Default prefix = /usr/local/bin
#
# OPTIONS: -p, --prefix "${PREFIX}"
# Prefix to install croc into. Defaults to /usr/local/bin
# REQUIREMENTS: bash, uname, tar/unzip, curl/wget, sudo (if not run
# as root), install, mktemp, sha256sum/shasum/sha256
#
# BUGS: ...hopefully not. Please report.
#
# NOTES: Homepage: https://schollz.com/software/croc
# Issues: https://github.com/schollz/croc/issues
# #
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Micheal Quinn, micheal.quinn85@gmail.com # AUTHOR: Micheal Quinn, micheal.quinn85@gmail.com
# COMPANY:
# ORGANIZATION:
# CREATED: 08/10/2019 16:41 # CREATED: 08/10/2019 16:41
# REVISION: 0.0.0 # REVISION: 0.5.0
#=============================================================================== #===============================================================================
set -o nounset # Treat unset variables as an error set -o nounset # Treat unset variables as an error
#--- FUNCTION ----------------------------------------------------------------
# NAME: print_message
# DESCRIPTION: Prints a message all fancy like
# PARAMETERS: $1 = Message to print
# $2 = Severity. info, ok, error, warn
# RETURNS: Formatted Message to stdout
#-------------------------------------------------------------------------------
print_message() {
local message
local severity
local red
local green
local yellow
local nc
message="${1}"
severity="${2}"
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[1;33m'
nc='\e[0m'
case "${severity}" in
"info" ) echo -e "${nc}${message}${nc}";;
"ok" ) echo -e "${green}${message}${nc}";;
"error" ) echo -e "${red}${message}${nc}";;
"warn" ) echo -e "${yellow}${message}${nc}";;
esac
}
#--- FUNCTION ---------------------------------------------------------------- #--- FUNCTION ----------------------------------------------------------------
# NAME: make_tempdir # NAME: make_tempdir
# DESCRIPTION: Makes a temp dir using mktemp if available # DESCRIPTION: Makes a temp dir using mktemp if available
@ -57,7 +99,6 @@ determine_os() {
local uname_out local uname_out
uname_cmd="$(command -v uname)" uname_cmd="$(command -v uname)"
if [[ "${uname_cmd}" == "" ]]; then if [[ "${uname_cmd}" == "" ]]; then
return 2 return 2
else else
@ -127,7 +168,6 @@ download_file() {
wget --quiet "${url}" -O "${dir}/${filename}" wget --quiet "${url}" -O "${dir}/${filename}"
rcode="${?}" rcode="${?}"
else else
echo "== Could not find curl or wget"
rcode="2" rcode="2"
fi fi
@ -340,32 +380,32 @@ main() {
tmpdir="$(make_tempdir "${croc_bin_name}")" tmpdir="$(make_tempdir "${croc_bin_name}")"
tmpdir_rcode="${?}" tmpdir_rcode="${?}"
if [[ "${tmpdir_rcode}" == "0" ]]; then if [[ "${tmpdir_rcode}" == "0" ]]; then
echo "== Created temp dir at ${tmpdir}" print_message "== Created temp dir at ${tmpdir}" "info"
else else
echo "== Failed to create temp dir at ${tmpdir}" print_message "== Failed to create temp dir at ${tmpdir}" "error"
exit 1 exit 1
fi fi
croc_arch="$(determine_arch)" croc_arch="$(determine_arch)"
croc_arch_rcode="${?}" croc_arch_rcode="${?}"
if [[ "${croc_arch_rcode}" == "0" ]]; then if [[ "${croc_arch_rcode}" == "0" ]]; then
echo "== Architecture detected as ${croc_arch}" print_message "== Architecture detected as ${croc_arch}" "info"
elif [[ "${croc_arch_rcode}" == "1" ]]; then elif [[ "${croc_arch_rcode}" == "1" ]]; then
echo "== Architecture not detected" print_message "== Architecture not detected" "error"
exit 1 exit 1
else else
echo "== 'uname' not found in path. Is it installed?" print_message "== 'uname' not found in path. Is it installed?" "error"
fi fi
croc_os="$(determine_os)" croc_os="$(determine_os)"
croc_os_rcode="${?}" croc_os_rcode="${?}"
if [[ "${croc_os_rcode}" == "0" ]]; then if [[ "${croc_os_rcode}" == "0" ]]; then
echo "== OS detected as ${croc_os}" print_message "== OS detected as ${croc_os}" "info"
elif [[ "${croc_os_rcode}" == "1" ]]; then elif [[ "${croc_os_rcode}" == "1" ]]; then
echo "== OS not detected" print_message "== OS not detected" "error"
exit 1 exit 1
else else
echo "== 'uname' not found in path. Is it installed?" print_message "== 'uname' not found in path. Is it installed?" "error"
fi fi
case "${croc_arch}" in case "${croc_arch}" in
@ -384,65 +424,65 @@ main() {
download_file "${croc_url}" "${tmpdir}" "${croc_file}" download_file "${croc_url}" "${tmpdir}" "${croc_file}"
download_file_rcode="${?}" download_file_rcode="${?}"
if [[ "${download_file_rcode}" == "0" ]]; then if [[ "${download_file_rcode}" == "0" ]]; then
echo "== Downloaded croc archive into ${tmpdir}" print_message "== Downloaded croc archive into ${tmpdir}" "info"
elif [[ "${download_file_rcode}" == "1" ]]; then elif [[ "${download_file_rcode}" == "1" ]]; then
echo "== Failed to download croc archive" print_message "== Failed to download croc archive" "error"
exit 1 exit 1
elif [[ "${download_file_rcode}" == "2" ]]; then elif [[ "${download_file_rcode}" == "2" ]]; then
echo "== Failed to locate curl or wget" print_message "== Failed to locate curl or wget" "error"
exit 1 exit 1
else else
echo "== Return code of download tool returned an unexpected value of ${download_file_rcode}" print_message "== Return code of download tool returned an unexpected value of ${download_file_rcode}" "error"
exit 1 exit 1
fi fi
download_file "${croc_checksum_url}" "${tmpdir}" "${croc_checksum_file}" download_file "${croc_checksum_url}" "${tmpdir}" "${croc_checksum_file}"
download_checksum_file_rcode="${?}" download_checksum_file_rcode="${?}"
if [[ "${download_checksum_file_rcode}" == "0" ]]; then if [[ "${download_checksum_file_rcode}" == "0" ]]; then
echo "== Downloaded croc checksums file into ${tmpdir}" print_message "== Downloaded croc checksums file into ${tmpdir}" "info"
elif [[ "${download_checksum_file_rcode}" == "1" ]]; then elif [[ "${download_checksum_file_rcode}" == "1" ]]; then
echo "== Failed to download croc checksums" print_message "== Failed to download croc checksums" "error"
exit 1 exit 1
elif [[ "${download_checksum_file_rcode}" == "2" ]]; then elif [[ "${download_checksum_file_rcode}" == "2" ]]; then
echo "== Failed to locate curl or wget" print_message "== Failed to locate curl or wget" "error"
exit 1 exit 1
else else
echo "== Return code of download tool returned an unexpected value of ${download_checksum_file_rcode}" print_message "== Return code of download tool returned an unexpected value of ${download_checksum_file_rcode}" "error"
exit 1 exit 1
fi fi
checksum_check "${tmpdir}/${croc_checksum_file}" "${tmpdir}/${croc_file}" "${tmpdir}" checksum_check "${tmpdir}/${croc_checksum_file}" "${tmpdir}/${croc_file}" "${tmpdir}"
checksum_check_rcode="${?}" checksum_check_rcode="${?}"
if [[ "${checksum_check_rcode}" == "0" ]]; then if [[ "${checksum_check_rcode}" == "0" ]]; then
echo "== Checksum of ${tmpdir}/${croc_file} verified" print_message "== Checksum of ${tmpdir}/${croc_file} verified" "ok"
elif [[ "${checksum_check_rcode}" == "1" ]]; then elif [[ "${checksum_check_rcode}" == "1" ]]; then
echo "== Failed to verify checksum of ${tmpdir}/${croc_file}" print_message "== Failed to verify checksum of ${tmpdir}/${croc_file}" "error"
exit 1 exit 1
elif [[ "${checksum_check_rcode}" == "20" ]]; then elif [[ "${checksum_check_rcode}" == "20" ]]; then
echo "== Failed to find tool to verify sha256 sums" print_message "== Failed to find tool to verify sha256 sums" "error"
exit 1 exit 1
elif [[ "${checksum_check_rcode}" == "30" ]]; then elif [[ "${checksum_check_rcode}" == "30" ]]; then
echo "== Failed to change into working directory ${tmpdir}" print_message "== Failed to change into working directory ${tmpdir}" "error"
exit 1 exit 1
else else
echo "== Unknown return code returned while checking checksum of ${tmpdir}/${croc_file}. Returned ${checksum_check_rcode}" print_message "== Unknown return code returned while checking checksum of ${tmpdir}/${croc_file}. Returned ${checksum_check_rcode}" "error"
exit 1 exit 1
fi fi
extract_file "${tmpdir}/${croc_file}" "${tmpdir}/" "${croc_dl_ext}" extract_file "${tmpdir}/${croc_file}" "${tmpdir}/" "${croc_dl_ext}"
extract_file_rcode="${?}" extract_file_rcode="${?}"
if [[ "${extract_file_rcode}" == "0" ]]; then if [[ "${extract_file_rcode}" == "0" ]]; then
echo "== Extracted ${croc_file} to ${tmpdir}/" print_message "== Extracted ${croc_file} to ${tmpdir}/" "info"
elif [[ "${extract_file_rcode}" == "1" ]]; then elif [[ "${extract_file_rcode}" == "1" ]]; then
echo "== Failed to extract ${croc_file}" print_message "== Failed to extract ${croc_file}" "error"
exit 1 exit 1
elif [[ "${extract_file_rcode}" == "2" ]]; then elif [[ "${extract_file_rcode}" == "2" ]]; then
echo "== Failed to determine which extraction tool to use" print_message "== Failed to determine which extraction tool to use" "error"
exit 1 exit 1
elif [[ "${extract_file_rcode}" == "3" ]]; then elif [[ "${extract_file_rcode}" == "3" ]]; then
echo "== Failed to find extraction tool in path" print_message "== Failed to find extraction tool in path" "error"
exit 1 exit 1
else else
echo "== Unknown error returned from extraction attempt" print_message "== Unknown error returned from extraction attempt" "error"
exit 1 exit 1
fi fi
@ -453,20 +493,21 @@ main() {
install_file_rcode="${?}";; install_file_rcode="${?}";;
esac esac
if [[ "${install_file_rcode}" == "0" ]]; then if [[ "${install_file_rcode}" == "0" ]]; then
echo "== Installed ${croc_bin_name} to ${prefix}/" print_message "== Installed ${croc_bin_name} to ${prefix}/" "ok"
elif [[ "${install_file_rcode}" == "1" ]]; then elif [[ "${install_file_rcode}" == "1" ]]; then
echo "== Failed to install ${croc_bin_name}" print_message "== Failed to install ${croc_bin_name}" "error"
exit 1 exit 1
elif [[ "${install_file_rcode}" == "2" ]]; then elif [[ "${install_file_rcode}" == "2" ]]; then
echo "== Failed to locate 'install' command" print_message "== Failed to locate 'install' command" "error"
exit 1 exit 1
else else
echo "== Return code of 'install' returned an unexpected value of ${install_file_rcode}" print_message "== Return code of 'install' returned an unexpected value of ${install_file_rcode}" "error"
exit 1 exit 1
fi fi
echo "== Cleaning up ${tmpdir}" print_message "== Cleaning up ${tmpdir}" "info"
cleanup "${tmpdir}" cleanup "${tmpdir}"
print_message "== Installation complete" "ok"
} }