#!/usr/bin/env bash
##makedesc: Install youtube-dl (src)

set -eo pipefail

installed() { command -v "$1" >/dev/null 2>&1; }

install() {
    echo
    echo "==============================================="
    echo "Installing youtube-dl"
    echo "==============================================="
    echo

    # https://github.com/ytdl-org/youtube-dl#installation

    if ! installed make; then
        if [ "$(uname -s)" = "Darwin" ]; then
            echo "ERROR: Install Xcode Command Line Tools first." >&2
            exit 1
        else
            sudo apt install -y make
        fi
    fi
    mkdir -p "$HOME/install/youtube-dl" "$HOME/.local/bin"

    if installed git; then
        if [ -d "$HOME/install/youtube-dl" ]; then
            cd "$HOME/install/youtube-dl"
            git pull
        else
            git clone https://github.com/ytdl-org/youtube-dl.git "$HOME/install/youtube-dl" --depth=1 --single-branch
        fi
    else
        if ! installed wget; then
            if [ "$(uname -s)" = "Darwin" ]; then
                echo "ERROR: Install wget or use git." >&2
                exit 1
            else
                sudo apt install -y wget
            fi
        fi
        wget -q --show-progress https://github.com/ytdl-org/youtube-dl/archive/refs/heads/master.zip -O "$HOME/install/youtube-dl.zip"
        unzip -oq "$HOME/install/youtube-dl.zip" -d "$HOME/install/youtube-dl"
    fi

    cd "$HOME/install/youtube-dl"
    make youtube-dl
    mv youtube-dl "$HOME/.local/bin/"

    echo
    echo "Finish!"
    youtube-dl --version
    echo
}

case "$1" in
    *) install ;;
esac
