#!/bin/bash

# This script needs to be run with root rights.
if [ $UID -ne 0 ]; then
    sudo $0
    exit 0
fi

function printNotSupportedMessageAndExit() {
    echo
    echo "Currently this script only works for distributions supporting apt-get and yum."
    echo "Please add support for your distribution: http://webkit.org/b/110693"
    echo
    exit 1
}

function checkInstaller {
    # apt-get - Debian based distributions
    apt-get --version &> /dev/null
    if [ $? -eq 0 ]; then
        installDependenciesWithApt
        exit 0
    fi

    # dnf - Fedora
    dnf --version &> /dev/null
    if [ $? -eq 0 ]; then
        installDependenciesWithDnf
        exit 0
    fi

    # pacman - Arch Linux
    # pacman --version and pacman --help both return non-0
    pacman -Ss &> /dev/null
    if [ $? -eq 0 ]; then
        installDependenciesWithPacman
        exit 0
    fi

    if [ `uname` -eq "Darwin" ]; then
       installDependenciesWithBrew
       exit 0
    fi

    printNotSupportedMessageAndExit
}

function installDependenciesWithBrew {
    brew &> /dev/null
    if [ $? -gt 1 ]; then
        echo "Please install HomeBrew. Instructions on http://brew.sh"
        exit 1
    fi

    brew install autoconf \
         automake \
         bison \
         cmake \
         enchant \
         flex \
         gettext \
         gobject-introspection \
         intltool \
         itstool \
         libcroco \
         libgcrypt \
         libgpg-error \
         libtiff \
         libtool \
         ninja \
         pango \
         pkg-config \
         sqlite \
         webp \
         xz
}

# 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.
function aptIfElse {
    if apt-cache show $1 &>/dev/null; then
        echo $1
    else
        echo $2
    fi
}

function installDependenciesWithApt {
    # These are dependencies necessary for building WebKitGTK+.
    packages=" \
        autoconf \
        automake \
        autopoint \
        autotools-dev \
        bison \
        cmake \
        flex \
        gawk \
        gnome-common \
        gperf \
        gtk-doc-tools \
        intltool \
        itstool \
        libatk1.0-dev \
        libedit-dev \
        libenchant-dev \
        libfaad-dev \
        $(aptIfElse libgeoclue-2-dev libgeoclue-dev) \
        libgirepository1.0-dev \
        libgl1-mesa-dev \
        libgl1-mesa-glx \
        libgnutls28-dev \
        libgtk2.0-dev \
        libgtk-3-dev \
        libgstreamer1.0-dev \
        libgstreamer-plugins-base1.0-dev \
        libgudev-1.0-dev \
        libhyphen-dev \
        libjpeg-dev \
        libmpg123-dev \
        libnotify-dev \
        libopus-dev \
        libpango1.0-dev \
        $(aptIfElse libpng-dev libpng12-dev) \
        libpulse-dev \
        librsvg2-dev \
        libsecret-1-dev \
        libsoup2.4-dev \
        libsqlite3-dev \
        libtheora-dev \
        libtool \
        libvorbis-dev \
        libwebp-dev \
        libxcomposite-dev \
        libxt-dev \
        libxtst-dev \
        libxslt1-dev \
        libwayland-dev \
        ninja-build \
        patch \
        ruby \
        xfonts-utils"

    # These are dependencies necessary for running tests.
    packages="$packages \
        apache2 \
        curl \
        dbus-x11 \
        libapache2-mod-bw \
        $(aptIfElse libapache2-mod-php7.0 libapache2-mod-php5) \
        libgpg-error-dev \
        psmisc \
        pulseaudio-utils \
        python-gi \
        python-psutil \
        ruby \
        ruby-json \
        ruby-highline \
        weston \
        xvfb"

    # These are dependencies necessary for building the jhbuild.
    packages="$packages \
        git \
        gobject-introspection \
        gsettings-desktop-schemas-dev \
        icon-naming-utils \
        libcroco3-dev \
        libdrm-dev \
        libegl1-mesa-dev \
        libepoxy-dev \
        libevdev-dev \
        libexpat1-dev \
        libgbm-dev \
        libgcrypt11-dev \
        libgles2-mesa-dev \
        libgpg-error-dev \
        libjson-glib-dev \
        libinput-dev \
        libmtdev-dev \
        libp11-kit-dev \
        libpciaccess-dev \
        libproxy-dev \
        libssl-dev \
        libtiff5-dev \
        libv4l-dev \
        libxcb-composite0-dev \
        libxcb-xfixes0-dev \
        libxfont-dev \
        libxkbfile-dev \
        libtool-bin \
        libudev-dev \
        python-dev \
        ragel \
        x11proto-bigreqs-dev \
        x11proto-composite-dev \
        x11proto-gl-dev \
        x11proto-input-dev \
        x11proto-randr-dev \
        x11proto-resource-dev \
        x11proto-scrnsaver-dev \
        x11proto-video-dev \
        x11proto-xcmisc-dev \
        x11proto-xf86dri-dev \
        xfonts-utils \
        xtrans-dev \
        xutils-dev"

    # These are dependencies necessary for using webkit-patch
    packages="$packages \
        git-svn \
        subversion"

    apt-get install $packages
}

function installDependenciesWithPacman {
    # These are dependencies necessary for building WebKitGTK+.
    packages=" \
        autoconf \
        automake \
        bison \
        cmake \
        libedit \
        file \
        findutils \
        flex \
        gawk \
        gcc \
        gettext \
        gnome-common \
        gperf \
        grep \
        groff \
        gstreamer \
        gst-plugins-base-libs \
        gzip \
        hyphen \
        libtool \
        m4 \
        make \
        patch \
        pkg-config \
        sed \
        texinfo \
        util-linux \
        which \
        gtk-doc \
        intltool \
        itstool \
        atk \
        enchant \
        faad2 \
        geoclue \
        gobject-introspection \
        mesa \
        mesa-libgl \
        gnutls \
        gtk2 \
        gtk3 \
        libsystemd \
        libjpeg-turbo \
        mpg123 \
        opus \
        pango \
        libnotify \
        libpng \
        libpulse \
        librsvg \
        libsecret \
        libsoup \
        sqlite \
        libtheora \
        libtool \
        libvorbis \
        libwebp \
        libxcomposite \
        libxt \
        libxslt \
        libxtst \
        ninja \
        ruby \
        xorg-font-utils \
        wayland"

    # These are dependencies necessary for running tests.
    # Note: apache-mod_bw is available in the AUR, but the main repos
    #       could not find ruby-json
    packages="$packages \
        apache \
        curl \
        hunspell \
        hunspell-en \
        php-apache \
        libgpg-error \
        psmisc \
        pulseaudio \
        python-gobject \
        python2-psutil \
        ruby \
        ruby-highline \
        weston \
        xorg-server-xvfb"

    # These are dependencies necessary for building the jhbuild.
    # Note: Could not find libegl-mesa
    packages="$packages \
        expat \
        git \
        gobject-introspection \
        gsettings-desktop-schemas \
        icon-naming-utils \
        libcroco \
        libdrm \
        libepoxy \
        libevdev \
        libgcrypt \
        libgpg-error \
        libinput \
        p11-kit \
        libpciaccess \
        libproxy \
        libtiff \
        libxfixes \
        libxfont \
        libxcb \
        libxkbfile \
        mtdev \
        python2 \
        python2-lxml \
        ragel \
        bigreqsproto \
        compositeproto \
        glproto \
        inputproto \
        randrproto \
        resourceproto \
        scrnsaverproto \
        videoproto \
        xcmiscproto \
        xf86driproto \
        xorg-font-utils \
        xorg-util-macros \
        xtrans \
        xorg-utils"

    # These are dependencies necessary for using webkit-patch
    packages="$packages \
        svn"
    pacman -S --needed $packages

    echo "You will also need to follow the instructions on the Arch Wiki to make"
    echo "'python' call python2 in the webkit folder"
    echo "https://wiki.archlinux.org/index.php/Python#Dealing_with_version_problem_in_build_scripts"
}

function installDependenciesWithDnf {
    # These are dependencies necessary for building WebKitGTK+.
    packages=" \
        atk-devel \
        autoconf \
        automake \
        bison \
        cairo-devel \
        cmake \
        enchant-devel \
        flex \
        gcc-c++ \
        geoclue2-devel \
        gettext-devel \
        gnutls-devel \
        gobject-introspection-devel \
        gperf \
        gstreamer1-devel \
        gstreamer1-plugins-base-devel \
        gtk-doc \
        gtk2-devel \
        gtk3-devel \
        hyphen-devel \
        intltool \
        json-glib-devel \
        libXt-devel \
        libXtst-devel \
        libxslt-devel \
        libedit-devel \
        libgudev1-devel \
        libjpeg-turbo-devel \
        libnotify-devel \
        libpng-devel \
        libsecret-devel \
        libsoup-devel \
        libv4l-devel \
        libwebp-devel \
        libwayland-client-devel \
        libwayland-server-devel \
        mesa-libGL-devel \
        ninja-build \
        openssl-devel \
        patch \
        pcre-devel \
        perl-Switch \
        perl-version \
        pulseaudio-libs-devel \
        python-devel \
        redhat-rpm-config \
        ruby \
        sqlite-devel"

    # These are dependencies necessary for running tests.
    packages="$packages \
        curl \
        dbus-x11 \
        hunspell-en \
        httpd \
        libgpg-error-devel \
        mod_bw \
        mod_ssl \
        perl-CGI \
        php \
        psmisc \
        pulseaudio-utils \
        pygobject3-base \
        python2-psutil \
        ruby \
        rubygem-json \
        rubygem-highline \
        weston-devel \
        xorg-x11-server-Xvfb"

    # These are dependencies necessary for building the jhbuild.
    packages="$packages \
        expat-devel \
        docbook-utils \
        docbook-utils-pdf \
        git \
        gobject-introspection \
        gsettings-desktop-schemas-devel \
        icon-naming-utils \
        itstool \
        libXfont-devel \
        libcroco-devel \
        libdrm-devel \
        libepoxy-devel \
        libevdev-devel
        libgcrypt-devel \
        libgpg-error-devel \
        libinput-devel \
        libp11-devel \
        libpciaccess-devel \
        libproxy-devel \
        libtiff-devel \
        libxcb-devel \
        libxkbfile-devel \
        mesa-libEGL-devel \
        mtdev-devel \
        ragel \
        systemd-devel \
        xorg-x11-font-utils \
        xorg-x11-proto-devel \
        xorg-x11-util-macros \
        xorg-x11-xtrans-devel"

    # These are dependencies necessary for using webkit-patch
    packages="$packages
        git-svn \
        subversion"

    dnf install $packages
}

checkInstaller

