#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-only

# shellcheck disable=SC1091

set -eE

msg() {
  echo -e "\x1B[1m$*\x1B[0m" >&2
}

trap 'msg "\x1B[31mFailed to install dependencies!"' ERR

. /etc/os-release

msg "Installing system build dependencies"
if [[ "${ID}" =~ "debian" ]] || [[ "${ID_LIKE}" =~ "debian" ]]; then
  sudo apt-get --quiet update
  sudo apt-get --quiet install \
    --no-install-recommends \
    --assume-yes \
    build-essential \
    ccache \
    cmake \
    curl \
    dosfstools \
    flashrom \
    git-lfs \
    libncurses-dev \
    libssl-dev \
    libudev-dev \
    mtools \
    parted \
    pkgconf \
    python-is-python3 \
    python3-distutils \
    uuid-dev \
    zlib1g-dev
elif [[ "${ID}" =~ "fedora" ]] || [[ "${ID_LIKE}" =~ "fedora" ]]; then
  sudo dnf group install c-development
  sudo dnf install \
    --assumeyes \
    ccache \
    cmake \
    curl \
    dosfstools \
    flashrom \
    git-lfs \
    libuuid-devel \
    mtools \
    ncurses-devel \
    openssl-devel \
    parted \
    patch \
    python-unversioned-command \
    python3 \
    systemd-devel \
    zlib-devel
elif [[ "${ID}" =~ "arch" ]] || [[ "${ID_LIKE}" =~ "arch" ]]; then
  sudo pacman -S \
    --noconfirm \
    ccache \
    cmake \
    curl \
    dosfstools \
    flashrom \
    git-lfs \
    mtools \
    ncurses \
    parted \
    patch \
    python \
    python-distutils-extra \
    systemd-libs
else
  msg "Unknown system ID: ${ID}"
  msg "Please add support for your distribution to: $0"
  exit 1
fi

# Don't run on Jenkins
if [ -z "${CI}" ]; then
    msg "Installing GIT LFS hooks"
    git lfs install

    msg "Downloading GIT LFS artifacts"
    git lfs pull
fi

msg "Initializing submodules"
git submodule update --init --recursive --checkout --progress

msg "Building coreboot toolchains"
./scripts/coreboot-sdk.sh

msg "Installing Rust toolchain and components"
./scripts/install-rust.sh

msg "Installing EC dependencies"
pushd ec
./scripts/deps.sh
popd

msg "\x1B[32mSuccessfully installed dependencies"
echo "Ready to run ./scripts/build.sh [model]" >&2