#!/bin/bash
set -e
set -o pipefail

FFMPEG_INSTALL_DIR="/usr/lib/audiobookshelf-ffmpeg/"
DEFAULT_AUDIOBOOK_PATH="/usr/share/audiobookshelf/audiobooks"
DEFAULT_DATA_PATH="/usr/share/audiobookshelf"
DEFAULT_PORT=7331
DEFAULT_HOST="0.0.0.0"

CONFIG_PATH="/etc/default/audiobookshelf"

install_ffmpeg() {
  echo "Starting FFMPEG Install"

  WGET="wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz"

  if ! cd "$FFMPEG_INSTALL_DIR"; then
    echo "WARNING: can't access working directory ($FFMPEG_INSTALL_DIR) creating it" >&2
    mkdir "$FFMPEG_INSTALL_DIR"
    cd "$FFMPEG_INSTALL_DIR"
  fi

  $WGET
  tar xvf ffmpeg-git-amd64-static.tar.xz --strip-components=1
  rm ffmpeg-git-amd64-static.tar.xz

  echo "Good to go on Ffmpeg... hopefully"
}

should_build_config() {
  if [ -f "$CONFIG_PATH" ]; then
    echo "You already have a config file. Do you want to use it?"

    options=("Yes" "No")
    select yn in "${options[@]}"
    do
      case $yn in
          "Yes") 
            false; return
            ;;
          "No")
            true; return
            ;;
      esac
    done
  else 
    echo "No existing config found in $CONFIG_PATH"
    true; return
  fi
}

setup_config_interactive() {
  if should_build_config; then
    echo "Okay, let's setup a new config."

    AUDIOBOOK_PATH=""
    read -p "
    Enter path for your audiobooks [Default: $DEFAULT_AUDIOBOOK_PATH]:" AUDIOBOOK_PATH

    if [[ -z "$AUDIOBOOK_PATH" ]]; then
      AUDIOBOOK_PATH="$DEFAULT_AUDIOBOOK_PATH"
    fi

    DATA_PATH=""
    read -p "
    Enter path for data files, i.e. streams, downloads, database [Default: $DEFAULT_DATA_PATH]:" DATA_PATH

    if [[ -z "$DATA_PATH" ]]; then
      DATA_PATH="$DEFAULT_DATA_PATH"
    fi

    PORT=""
    read -p "
    Port for the web ui [Default: $DEFAULT_PORT]:" PORT

    if [[ -z "$PORT" ]]; then
      PORT="$DEFAULT_PORT"
    fi

    config_text="AUDIOBOOK_PATH=$AUDIOBOOK_PATH
  METADATA_PATH=$DATA_PATH/metadata
  CONFIG_PATH=$DATA_PATH/config
  FFMPEG_PATH=/usr/lib/audiobookshelf-ffmpeg/ffmpeg
  FFPROBE_PATH=/usr/lib/audiobookshelf-ffmpeg/ffprobe
  PORT=$PORT
  HOST=$DEFAULT_HOST"

    echo "$config_text"

    echo "$config_text" > /etc/default/audiobookshelf;

    echo "Config created"

  fi
}

setup_config() {
  if [ -f "$CONFIG_PATH" ]; then
    echo "Existing config found."
    cat $CONFIG_PATH
  else
    echo "Creating default config."

    config_text="AUDIOBOOK_PATH=$DEFAULT_AUDIOBOOK_PATH
  METADATA_PATH=$DEFAULT_DATA_PATH/metadata
  CONFIG_PATH=$DEFAULT_DATA_PATH/config
  FFMPEG_PATH=/usr/lib/audiobookshelf-ffmpeg/ffmpeg
  FFPROBE_PATH=/usr/lib/audiobookshelf-ffmpeg/ffprobe
  PORT=$DEFAULT_PORT
  HOST=$DEFAULT_HOST"

    echo "$config_text"

    echo "$config_text" > /etc/default/audiobookshelf;

    echo "Config created"
  fi
}

setup_config

install_ffmpeg
