#!/bin/bash
set -e

# Script for installing tmux and dependencies.
# tmux will be installed in /usr/local/lib by default.

# Prerequisites: - gcc
#                - wget

# define versions

tmux_version="2.1"
tmux_patch_version="" # leave empty for stable releases

libevent_version="2.0.21"
ncurses_version="5.9"

tmux_full_version="$tmux_version$tmux_patch_version"
tmux_name="tmux-$tmux_full_version"
libevent_name="libevent-$libevent_version-stable"
ncurses_name="ncurses-$ncurses_version"

# Download source files for tmux, libevent, and ncurses to tmp dir
cd "$TMP_DIR"
curl -OL "https://github.com/tmux/tmux/releases/download/$tmux_full_version/${tmux_name}.tar.gz"
curl -O "https://cloud.github.com/downloads/libevent/libevent/${libevent_name}.tar.gz"
wget -O "${ncurses_name}.tar.gz" ftp://ftp.gnu.org/gnu/ncurses/${ncurses_name}.tar.gz

# extract files, configure, and compile

# libevent installation
tar xvzf "${libevent_name}.tar.gz"
(cd "$libevent_name" && ./configure --prefix="$LOCAL_PREFIX" --disable-shared &&  make && make install) || exit 1

# ncurses installation
tar xvzf "${ncurses_name}.tar.gz"
(cd "$ncurses_name" && ./configure --prefix="$LOCAL_PREFIX" && make && make install) || exit 1

# tmux installation
tar xvzf "${tmux_name}.tar.gz"
(\
    cd "${tmux_name}" && \
    ./configure CFLAGS="-I$LOCAL_PREFIX/include -I$LOCAL_PREFIX/include/ncurses" LDFLAGS="-L$LOCAL_PREFIX/lib -L$LOCAL_PREFIX/include/ncurses -L$LOCAL_PREFIX/include" && \
    CPPFLAGS="-I$LOCAL_PREFIX/include -I$LOCAL_PREFIX/include/ncurses" LDFLAGS="-static -L$LOCAL_PREFIX/include -L$LOCAL_PREFIX/include/ncurses -L$LOCAL_PREFIX/lib" make && \
    cp tmux "$LOCAL_PREFIX/bin" \
) || exit 1

version=$( tmux -V | cut -d ' ' -f 2 )
if [ -z "$version" ]; then
  echo
  echo "[error] failed to install tmux - check for errors in the above output"
  exit 1
fi
cd "$ROOT_DIR"