2023-08-04 01:06:24 -07:00
#!/usr/bin/env bash
2024-03-20 20:49:27 -07:00
# Trap INT signal to ensure clean exits
2023-08-04 01:30:15 -07:00
trap 'exit 130' INT
2024-03-20 20:49:27 -07:00
# Confirmation prompt
while true; do
read -r -p "Would you like to install Hugo? [Y/n] " input
case $input in
[ yY] [ eE] [ sS] | [ yY] )
break
; ;
[ nN] [ oO] | [ nN] )
echo "Hugo installation aborted."
exit 0
; ;
*)
echo "That wasn't an option..."
; ;
esac
2023-08-04 01:06:24 -07:00
done
2024-03-20 20:49:27 -07:00
# Check for dependencies and install if needed
if ! command -v curl & >/dev/null; then
echo "Installing curl..."
sudo apt update && sudo apt install -y curl || { echo "Failed to install curl. Exiting." ; exit 1; }
2023-08-04 01:06:24 -07:00
fi
2024-03-20 20:49:27 -07:00
# Remove unused dependencies (optional)
echo "Removing unused dependencies..."
sudo apt autoremove -y
# Download Hugo
echo "Downloading Hugo..."
mkdir -p /tmp/hugo && cd /tmp/hugo || { echo "Failed to create directory. Exiting." ; exit 1; }
VER = $( curl --silent "https://api.github.com/repos/gohugoio/hugo/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's|[v,]||g' ) || { echo "Failed to fetch Hugo version. Exiting." ; exit 1; }
2023-08-04 01:06:24 -07:00
if [ -n " $( uname -a | grep x86_64) " ] ; then
2024-03-20 20:49:27 -07:00
HUGO_URL = " https://github.com/gohugoio/hugo/releases/download/v $VER /hugo_extended_ ${ VER } _Linux-64bit.tar.gz "
elif [ -n " $( uname -a | grep armv6l) " ] ; then
HUGO_URL = " https://github.com/gohugoio/hugo/releases/download/v $VER /hugo_extended_ ${ VER } _Linux-ARM64.tar.gz "
elif [ -n " $( uname -a | grep armv7l) " ] ; then
HUGO_URL = " https://github.com/gohugoio/hugo/releases/download/v $VER /hugo_ ${ VER } _Linux-ARM.tar.gz "
echo "Hugo Extended is not supported on armv7l, installing standard Hugo..."
sudo apt update && sudo apt install -y snapd || { echo "Failed to install snapd. Exiting." ; exit 1; }
sudo snap install dart-sass || { echo "Failed to install dart-sass via snap. Exiting." ; exit 1; }
else
echo "Unsupported architecture. Exiting."
exit 1
2023-08-04 01:06:24 -07:00
fi
2024-03-20 20:49:27 -07:00
# Download and install Hugo
echo "Downloading and installing Hugo..."
wget -O hugo.tar.gz " $HUGO_URL " || { echo "Failed to download Hugo. Exiting." ; exit 1; }
tar -xzf hugo.tar.gz || { echo "Failed to extract Hugo. Exiting." ; exit 1; }
sudo mv hugo /usr/local/bin || { echo "Failed to move Hugo binary. Exiting." ; exit 1; }
echo "Hugo successfully installed!"
# Clean up
rm -rf /tmp/hugo
cd ~
exit 0