#!/usr/bin/env bash

### ---------------------------------------------------------
### Directories
### ---------------------------------------------------------

NERD_BASE="/usr/share/fonts/nerdfonts"
LOCAL_BASE="/usr/share/fonts/local"

sudo mkdir -p "$NERD_BASE"
sudo mkdir -p "$LOCAL_BASE"

TMP_DIR="/tmp/font-installer"
mkdir -p "$TMP_DIR"


### ---------------------------------------------------------
### Nerd Fonts (Mono TTF)
### ---------------------------------------------------------

TTF_FONTS=(
    "0xProto"
    "AdwaitaMono"
    "BitstreamVeraSansMono"
    "CascadiaCode"
    "DejaVuSansMono"
    "IBMPlexMono"
    "Mononoki"
    "FiraCode"
    "Hack"
    "IntelOneMono"
    "JetBrainsMono"
    "Meslo"
    "Noto"
    "Recursive"
    "SpaceMono"
)

### ---------------------------------------------------------
### Nerd Fonts (OTF)
### ---------------------------------------------------------

OTF_FONTS=(
    "AtkinsonHyperlegibleMono"
    "CodeNewRoman"
    "Hermit"
    "GeistMono"
)

echo "Installing Nerd Fonts into: $NERD_BASE"

### ---------------------------------------------------------
### 1. Install TTF-based Nerd Fonts (Mono variants only)
### ---------------------------------------------------------

for FONT in "${TTF_FONTS[@]}"; do
    ZIP="${TMP_DIR}/${FONT}.zip"
    FONT_DIR="${NERD_BASE}/${FONT}"
    URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT}.zip"

    echo "Downloading $FONT..."
    sudo wget -q --show-progress "$URL" -O "$ZIP"

    echo "Extracting *NerdFontMono*.ttf..."
    sudo mkdir -p "$FONT_DIR"
    sudo unzip -j "$ZIP" "*NerdFontMono*.ttf" -d "$FONT_DIR" >/dev/null
done


### ---------------------------------------------------------
### 2. Install OTF-based Nerd Fonts
### ---------------------------------------------------------

for FONT in "${OTF_FONTS[@]}"; do
    ZIP="${TMP_DIR}/${FONT}.zip}"
    FONT_DIR="${NERD_BASE}/${FONT}"
    URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT}.zip"

    echo "Downloading $FONT (OTF)..."
    sudo wget -q --show-progress "$URL" -O "$ZIP"

    echo "Extracting *.otf..."
    sudo mkdir -p "$FONT_DIR"
    sudo unzip -j "$ZIP" "*.otf" -d "$FONT_DIR" >/dev/null
done


### ---------------------------------------------------------
### 3. Install Inter (Inter-*.ttf → /usr/share/fonts/local)
### ---------------------------------------------------------

echo "Installing Inter..."
INTER_ZIP="${TMP_DIR}/inter.zip"

sudo wget -q --show-progress \
  "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" \
  -O "$INTER_ZIP"

sudo unzip -j "$INTER_ZIP" "extras/ttf/Inter-*.ttf" -d "$LOCAL_BASE" >/dev/null


### ---------------------------------------------------------
### 4. Install Office Code Pro (.ttf → /usr/share/fonts/local)
### ---------------------------------------------------------

echo "Installing Office Code Pro..."
OCP_ZIP="${TMP_DIR}/officecodepro.zip"

sudo wget -q --show-progress \
  "https://globalfonts.pro/global_files/64677722a717112392dab2d4/office-code-pro.zip" \
  -O "$OCP_ZIP"

sudo unzip -j "$OCP_ZIP" "*.ttf" -d "$LOCAL_BASE" >/dev/null


### ---------------------------------------------------------
### 5. Install SF Mono (.otf → /usr/share/fonts/nerdfonts/SFMono)
### ---------------------------------------------------------

echo "Installing SF Mono..."
SF_DIR="${NERD_BASE}/SFMono"
SF_ZIP="${TMP_DIR}/sfmono.zip"

sudo mkdir -p "$SF_DIR"

sudo wget -q --show-progress \
  "https://github.com/epk/SF-Mono-Nerd-Font/archive/refs/tags/v18.0d1e1.0.zip" \
  -O "$SF_ZIP"

sudo unzip -j "$SF_ZIP" "*.otf" -d "$SF_DIR" >/dev/null


### ---------------------------------------------------------
### Final Cleanup + Font Cache
### ---------------------------------------------------------

echo "Cleaning up temporary files..."
sudo rm -rf "$TMP_DIR"

echo "Updating font cache..."
sudo fc-cache -fv

echo "All fonts installed successfully."
