#!/usr/bin/env bash

# If the package $1 is available, prints it. Otherwise prints $2.
# Useful for handling when a package is renamed on new versions of Debian/Ubuntu.
aptIfElse() {
    if apt-cache show $1 &>/dev/null; then
        echo $1
    else
        echo $2
    fi
}

aptIfExists() {
    local ret=$(apt show "$1" 2>/dev/null)
    if [[ $? -ne 0 ]]; then
        return
    fi
    if [[ "$ret" =~ "(virtual)" ]]; then
        return
    fi
    echo "$1"
}

PACKAGES=(
    # These are dependencies necessary for building WebKitGTK/WPE.
    autoconf
    automake
    autopoint
    autotools-dev
    bubblewrap
    cmake
    gawk
    gperf
    gtk-doc-tools
    intltool
    itstool
    libasound2-dev
    libatk1.0-dev
    libepoxy-dev
    libevent-dev
    libfile-copy-recursive-perl
    $(aptIfElse libgcrypt20-dev libgcrypt11-dev)
    libgstreamer1.0-dev
    libgstreamer-plugins-bad1.0-dev
    libgstreamer-plugins-base1.0-dev
    libjpeg-dev
    libkate-dev
    liblcms2-dev
    libopenjp2-7-dev
    libpng-dev
    libseccomp-dev
    libsqlite3-dev
    libsystemd-dev
    libtasn1-6-dev
    libtool
    libwayland-dev
    libwebp-dev
    libwoff-dev
    libxslt1-dev
    ninja-build
    patch
    ruby

    # These are dependencies necessary for running tests.
    apache2
    curl
    fonts-liberation
    gdb
    libcgi-pm-perl
    psmisc
    pulseaudio-utils
    ruby-highline
    ruby-json
    $(aptIfExists python-gi)

    # These are dependencies necessary for building with the Flatpak SDK.
    flatpak
    libglib2.0-bin

    # These are dependencies necessary for building the jhbuild.
    git
    gsettings-desktop-schemas-dev
    gyp
    libegl1-mesa-dev
    libexpat1-dev
    libfdk-aac-dev
    libgles2-mesa-dev
    liborc-0.4-dev
    libproxy-dev
    libpsl-dev
    libtool-bin
    libxml-libxml-perl
    python3-setuptools
    uuid-dev
    yasm

    # These are dependencies necessary for using webkit-patch.
    git-svn
    subversion

    # These are GStreamer plugins needed to play different media files.
    gstreamer1.0-gl
    gstreamer1.0-libav
    gstreamer1.0-plugins-bad
    gstreamer1.0-plugins-base
    gstreamer1.0-plugins-good
    gstreamer1.0-plugins-ugly
    gstreamer1.0-pulseaudio
)
