11#! /usr/bin/env bash
22
3+ # Variables
4+ REPO_OWNER=" tmux"
5+ REPO_NAME=" tmux"
6+ BINARY_NAME=" tmux"
7+ TMUX_VERSION=" ${VERSION:- " latest" } "
8+ GITHUB_API_REPO_URL=" https://api.github.com/repos/${REPO_OWNER} /${REPO_NAME} /releases"
9+
310set -e
411
512if [ " $( id -u) " -ne 0 ]; then
@@ -21,9 +28,48 @@ check_packages() {
2128 fi
2229}
2330
24- # Install tmux
31+ # Make sure we have required dependencies
32+ check_packages curl jq ca-certificates build-essential pkg-config libevent-dev libncurses-dev bison tar
33+
34+ # Function to get the latest version from GitHub API
35+ get_latest_version () {
36+ curl -s " ${GITHUB_API_REPO_URL} /latest" | jq -r " .tag_name"
37+ }
38+
39+ # Check if a version is passed as an argument
40+ if [ -z " $TMUX_VERSION " ] || [ " $TMUX_VERSION " == " latest" ]; then
41+ TMUX_VERSION=$( get_latest_version)
42+ echo " No version provided or 'latest' specified, installing the latest version: $TMUX_VERSION "
43+ else
44+ echo " Installing version from environment variable: $TMUX_VERSION "
45+ fi
46+
47+ # Construct the download URL
48+ DOWNLOAD_URL=" https://github.com/${REPO_OWNER} /${REPO_NAME} /releases/download/${TMUX_VERSION} /tmux-${TMUX_VERSION} .tar.gz"
49+
50+ # Create a temporary directory for the download
51+ TMP_DIR=$( mktemp -d)
52+ cd " $TMP_DIR " || exit
53+
54+ echo " Downloading tmux from $DOWNLOAD_URL "
55+ curl -sSL " $DOWNLOAD_URL " -o " tmux.tar.gz"
56+
57+ # Extract the tarball
58+ echo " Extracting tmux..."
59+ tar -xzf " tmux.tar.gz"
60+
61+ # Build from source
62+ cd " tmux-${TMUX_VERSION} " || exit
63+ echo " Configuring tmux..."
64+ ./configure --prefix=/usr/local
65+ echo " Building tmux..."
66+ make -j" $( nproc) "
2567echo " Installing tmux..."
26- check_packages tmux
68+ make install
69+
70+ # Cleanup
71+ cd / || exit
72+ rm -rf " $TMP_DIR "
2773
2874# Clean up
2975rm -rf /var/lib/apt/lists/*
0 commit comments