basic-book-builder/scripts/setup-linux-deb.sh

122 lines
3.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Usage: scripts/setup-linux-deb.sh
# Description: Installs build dependencies for Debian-based systems (Ubuntu, Zorin, etc.)
set -euo pipefail
echo "🚀 Starting Basic-Book-Builder Setup..."
# 0. WARNING Message
echo "⚠️ WARNING: This script is about install APT packages to your system."
echo " Please review the package list carefully before proceeding."
echo " The following packages will be installed and require SUDO permissions:"
echo " - make, jq, yq, wget, curl, tar, git, rsync"
echo " - texlive, texlive-xetex, texlive-latex-extra, texlive-fonts-recommended, texlive-fonts-extra, lmodern"
echo " - pandoc"
echo " - obsidian"
echo " - zotero"
echo ""
read -p "Press Enter to continue or Ctrl+C to cancel..."
# 1. Update package lists
sudo apt update
# 2. Install Core Utilities
echo "📦 Installing core utilities (make, jq, yq, etc.)..."
sudo apt install -y make jq yq wget curl tar git rsync ttf-mscorefonts-installer fonts-noto-core fonts-noto-ui-core fonts-noto-mono
# 3. Install TeX Live Stack
echo "📑 Installing TeX Live stack (this may take a while)..."
sudo apt install -y \
texlive \
texlive-xetex \
texlive-latex-extra \
texlive-fonts-recommended \
texlive-fonts-extra \
lmodern
# 4. Install Pandoc (Specific Version)
PANDOC_VER="3.8.2.1"
if ! command -v pandoc &> /dev/null || [[ $(pandoc --version | head -n1) != *"$PANDOC_VER"* ]]; then
echo "📥 Downloading and installing Pandoc v$PANDOC_VER..."
PANDOC_DEB="pandoc-$PANDOC_VER-1-amd64.deb"
wget "https://github.com/jgm/pandoc/releases/download/$PANDOC_VER/$PANDOC_DEB"
sudo apt install -y "./$PANDOC_DEB"
rm "$PANDOC_DEB"
else
echo "✅ Pandoc $PANDOC_VER is already installed."
fi
# 5. MathJax Setup (Local assets for HTML build)
MATHJAX_DIR="lib/mathjax"
if [ ! -d "$MATHJAX_DIR" ]; then
echo "🔢 Setting up MathJax..."
mkdir -p "$MATHJAX_DIR"
wget https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz
tar xzf mathjax-3.2.2.tgz
mv package/es5/* "$MATHJAX_DIR/"
rm -rf package mathjax-3.2.2.tgz
else
echo "✅ MathJax already present in $MATHJAX_DIR."
fi
# 6. Scaffolding Build Directories
echo "📂 Creating project directory structure..."
mkdir -p build/pdf build/html build/latex build/epub build/md
mkdir -p scripts/tmp
mkdir -p lib/img lib/diag
# 7. Obsidian Setup
# Check if obsidian is already installed
if ! command -v obsidian &> /dev/null; then
echo "📦 Installing Obsidian..."
wget -O scripts/tmp/obsidian_1.9.14_amd64.deb https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb
sudo apt install -y ./scripts/tmp/obsidian_1.9.14_amd64.deb
rm scripts/tmp/obsidian_1.9.14_amd64.deb
echo "✅ Obsidian installed successfully."
else
echo "✅ Obsidian is already installed."
fi
# 8. Zotero Setup
echo "📦 Installing Zotero..."
sudo mkdir -p /usr/share/keyrings
# Install key (direct binary key, no gpg needed)
# Check if zotero is already installed
if ! command -v zotero &> /dev/null; then
echo "📥 Downloading and installing Zotero..."
curl -sL https://raw.githubusercontent.com/retorquere/zotero-deb/master/install.sh | sudo bash -s -- -m sources
sudo apt update
sudo apt install -y zotero
echo "✅ Zotero installed successfully."
else
echo "✅ Zotero is already installed."
fi
# 9. Optional Tools (Checks if they are installed, otherwise prompts)
# echo "🔍 Checking for optional tools..."
# for tool in foliate calibre epubcheck; do
# if ! command -v $tool &> /dev/null; then
# echo "💡 Tip: You might want to 'sudo apt install $tool' for better EPub testing."
# fi
# done
echo "---------------------------------------------------"
echo "🎉 Setup Complete!"
echo "👉 To verify your setup, try running: make pdf"