portfolio/scripts/install-cliff.sh
christiangoeschel d6b2a3e6d9
All checks were successful
Pull Request Checks / commit-message-check (pull_request) Successful in 6s
Pull Request Checks / linting (pull_request) Successful in 1m58s
feat: Add a CI pipeline and fix all code style issues
2025-02-27 00:08:41 -05:00

85 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Logs messages to STDOUT using the same message severities as described in RFC 5424 in 6.2.1
# Table 2: Syslog Message Severities - https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1
function log(){
local log_lvl="${1}"
local msg="${2}"
case ${log_lvl} in
0)
printf "%s\n" "[$(tput setaf 1)$(tput bold)emergency$(tput sgr0)] ${msg}"
;;
1)
printf "%s\n" "[$(tput setaf 1)$(tput bold)alert$(tput sgr0)] ${msg}"
;;
2)
printf "%s\n" "[$(tput setaf 1)$(tput bold)critical$(tput sgr0)] ${msg}"
;;
3)
printf "%s\n" "[$(tput setaf 1)$(tput bold)error$(tput sgr0)] ${msg}"
;;
4)
printf "%s\n" "[$(tput setaf 3)$(tput bold)warning$(tput sgr0)] ${msg}"
;;
5)
printf "%s\n" "[$(tput setaf 2)$(tput bold)notice$(tput sgr0)] ${msg}"
;;
6)
printf "%s\n" "[$(tput setaf 2)$(tput bold)info$(tput sgr0)] ${msg}"
;;
7)
printf "%s\n" "[$(tput setaf 5)$(tput bold)debug$(tput sgr0)] ${msg}"
;;
*)
printf "%s\n" "${@}"
;;
esac
}
BIN_INSTALL_DIR="/usr/local/bin"
log 6 "Querying Github API for latest git-cliff release download URL..."
RELEASE_TAR_DOWNLOAD_URL="$(curl -s https://api.github.com/repos/orhun/git-cliff/releases/latest \
| tr -d \" \
| awk -F" " '/.*-x86_64-unknown-linux-gnu.tar.gz$/ && /browser_download_url/ {print $2}')"
RELEASE_TAR_FILENAME="$(echo "${RELEASE_TAR_DOWNLOAD_URL}" | awk -F'/' '{print $9}')"
EXTRACTED_TAR_DIR_NAME="$(echo "${RELEASE_TAR_FILENAME}" | awk -F'-x86_64' '{print $1}')"
if [[ -n "${RELEASE_TAR_DOWNLOAD_URL}" && -n "${RELEASE_TAR_FILENAME}" ]]; then
CHECKSUM_DOWNLOAD_URL="${RELEASE_TAR_DOWNLOAD_URL}.sha512"
CHECKSUM_FILENAME="${RELEASE_TAR_FILENAME}.sha512"
else
log 3 "Could not get latest git-cliff release download URL"
exit 1
fi
log 6 "Downloading git-cliff latest binary release for x86_64"
if ! wget "${RELEASE_TAR_DOWNLOAD_URL}"; then
log 3 "Could not download git-cliff"
fi
log 6 "Downloading git-cliff SHA512 checksum for ${RELEASE_TAR_FILENAME}"
if ! wget "${CHECKSUM_DOWNLOAD_URL}"; then
log 3 "Could not download git-cliff checksum"
fi
log 6 "Verifying checksum"
if ! sha512sum -c "${CHECKSUM_FILENAME}"; then
log 3 "The downloaded tar archive is corrupted"
exit 1
fi
rm -f "${CHECKSUM_FILENAME}"
log 6 "Extracting ${PWD}/${RELEASE_TAR_FILENAME}"
if ! tar -xvf "${RELEASE_TAR_FILENAME}"; then
log 3 "Failed to extract ${PWD}/${RELEASE_TAR_FILENAME}"
exit 1
fi
log 6 "Copying binary ${EXTRACTED_TAR_DIR_NAME}/git-cliff to ${BIN_INSTALL_DIR}"
if ! cp "${EXTRACTED_TAR_DIR_NAME}/git-cliff" "${BIN_INSTALL_DIR}"; then
log 3 "Failed to copy git-cliff to ${BIN_INSTALL_DIR}"
fi