From b7bf9644de0554983bc2288d1c804680f38eef9c Mon Sep 17 00:00:00 2001
From: Nick Sweeting <git@sweeting.me>
Date: Fri, 23 Apr 2021 23:43:41 -0400
Subject: [PATCH] Update setup.sh

---
 bin/setup.sh | 117 ++++++++++++++++-----------------------------------
 1 file changed, 36 insertions(+), 81 deletions(-)

diff --git a/bin/setup.sh b/bin/setup.sh
index 304c96c5..d700f66f 100755
--- a/bin/setup.sh
+++ b/bin/setup.sh
@@ -2,20 +2,24 @@
 # ArchiveBox Setup Script
 # https://github.com/ArchiveBox/ArchiveBox
 
+echo "[!] It's highly recommended to use Docker instead of running this script. ⚠️"
+echo "    Docker is safer and easier to set up, and includes everything working out-of-the-box:"
+echo "        https://github.com/ArchiveBox/ArchiveBox/wiki/Docker"
+echo ""
+echo "Continuing in 5s... (press [Ctrl+C] to cancel)"
+sleep 5
 echo "[i] ArchiveBox Setup Script 📦"
 echo ""
-echo "    This is a helper script which installs the ArchiveBox dependencies on your system using homebrew/aptitude."
+echo "    This is a helper script which installs the ArchiveBox dependencies on your system using brew/apt/pip3."
 echo "    You may be prompted for a password in order to install the following:"
 echo ""
 echo "        - python3, python3-pip, python3-distutils"
-echo "        - curl"
-echo "        - wget"
-echo "        - git"
-echo "        - youtube-dl"
-echo "        - chromium-browser  (skip this if Chrome/Chromium is already installed)"
-echo "        - nodejs            (used for singlefile, readability, mercury, and more)"
+echo "        - nodejs, npm                  (used for singlefile, readability, mercury, and more)"
+echo "        - curl, wget, git, youtube-dl  (used for extracting title, favicon, git, media, and more)"
+echo "        - chromium                     (skips this if any Chrome/Chromium version is already installed)"
 echo ""
-echo "    If you'd rather install these manually, you can find documentation here:"
+echo ""
+echo "    If you'd rather install these manually as-needed, you can find detailed documentation here:"
 echo "        https://github.com/ArchiveBox/ArchiveBox/wiki/Install"
 echo ""
 read -p "Press [enter] to continue with the automatic install, or Ctrl+C to cancel..." REPLY
@@ -24,93 +28,44 @@ echo ""
 # On Linux:
 if which apt-get > /dev/null; then
     echo "[+] Adding ArchiveBox apt repo to sources..."
-    sudo apt install software-properties-common
-    sudo add-apt-repository -u ppa:archivebox/archivebox
-    echo "[+] Installing python3, wget, curl..."
-    sudo apt install -y git python3 python3-pip python3-distutils wget curl youtube-dl nodejs npm ripgrep
-    # sudo apt install archivebox
-
-    if which google-chrome; then
-        echo "[i] You already have google-chrome installed, if you would like to download chromium instead (they work pretty much the same), follow the Manual Setup instructions"
-        google-chrome --version
-    elif which chromium-browser; then
-        echo "[i] chromium-browser already installed, using existing installation."
-        chromium-browser --version
-    elif which chromium; then
-        echo "[i] chromium already installed, using existing installation."
-        chromium --version
-    else
-        echo "[+] Installing chromium..."
-        sudo apt install chromium || sudo apt install chromium-browser
+    if ! (sudo apt install -y software-properties-common && sudo add-apt-repository -u ppa:archivebox/archivebox); then
+        echo "deb http://ppa.launchpad.net/archivebox/archivebox/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/archivebox.list
+        echo "deb-src http://ppa.launchpad.net/archivebox/archivebox/ubuntu focal main" | sudo tee -a /etc/apt/sources.list.d/archivebox.list
+        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C258F79DCC02E369
+        sudo apt-get update -qq
     fi
+    echo "[+] Installing ArchiveBox and its dependencies using apt..."
+    # sudo apt install -y git python3 python3-pip python3-distutils wget curl youtube-dl ffmpeg git nodejs npm ripgrep
+    sudo apt-get install -y archivebox
+    sudo apt-get --only-upgrade install -y archivebox
 
 # On Mac:
-elif which brew > /dev/null; then   # 🐍 eye of newt
-    echo "[+] Installing python3, wget, curl  (ignore 'already installed' warnings)..."
-    brew install git wget curl youtube-dl ripgrep node
-    if which python3; then
-        if python3 -c 'import sys; raise SystemExit(sys.version_info < (3,5,0))'; then
-            echo "[√] Using existing $(which python3)..."
-        else
-            echo "[+] Installing python3..."
-            brew install python3
-        fi
-    else
-        echo "[+] Installing python3..."
-        brew install python3
-    fi
-
-    if ls /Applications/Google\ Chrome*.app > /dev/null; then
-        echo "[√] Using existing /Applications/Google Chrome.app"
-    elif ls /Applications/Chromium.app; then
-        echo "[√] Using existing /Applications/Chromium.app"
-    elif which chromium-browser; then
-        echo "[√] Using existing $(which chromium-browser)"
-    elif which chromium; then
-        echo "[√] Using existing $(which chromium)"
-    else
-        echo "[+] Installing chromium..."
-        brew cask install chromium
-    fi
+elif which brew > /dev/null; then
+    echo "[+] Installing ArchiveBox and its dependencies using brew..."
+    brew tap archivebox/archivebox
+    brew update
+    brew install --fetch-HEAD -f archivebox
 else
-    echo "[X] Could not find aptitude or homebrew! ‼️"
+    echo "[!] Warning: Could not find aptitude or homebrew! May not be able to install all dependencies correctly."
     echo ""
     echo "    If you're on macOS, make sure you have homebrew installed:     https://brew.sh/"
     echo "    If you're on Ubuntu/Debian, make sure you have apt installed:  https://help.ubuntu.com/lts/serverguide/apt.html"
     echo "    (those are the only currently supported systems for the automatic setup script)"
     echo ""
-    echo "See the README.md for Manual Setup & Troubleshooting instructions."
-    exit 1
+    echo "See the README.md for Manual Setup & Troubleshooting instructions if you you're unable to run ArchiveBox after this script completes."
 fi
 
-npm i -g npm
-pip3 install --upgrade pip setuptools
+# echo "[+] Upgrading npm and pip..."
+# npm i -g npm
+# pip3 install --upgrade pip setuptools
 
+echo "[+] Installing ArchiveBox and its dependencies using pip..."
 pip3 install --upgrade archivebox
-npm install -g 'git+https://github.com/ArchiveBox/ArchiveBox.git' 
 
-# Check:
-echo ""
-echo "[*] Checking installed versions:"
-echo "---------------------------------------------------"
-which python3 &&
-python3 --version | head -n 1 &&
-echo "" &&
-which git &&
-git --version | head -n 1 &&
-echo "" &&
-which wget &&
-wget --version | head -n 1 &&
-echo "" &&
-which curl &&
-curl --version | head -n 1 &&
-echo "" &&
-which youtube-dl &&
-youtube-dl --version | head -n 1 &&
-echo "---------------------------------------------------" &&
-archivebox version &&
-echo "[√] All dependencies installed. ✅" &&
-exit 0
+echo "[+] Initializing ArchiveBox data folder at ~/archivebox..."
+mkdir -p ~/archivebox
+cd ~/archivebox
+archivebox init --setup && exit 0
 
 echo "---------------------------------------------------"
 echo "[X] Failed to install some dependencies! ‼️"