From 7a04137f69630a374c5d13747a3fad2aa939c383 Mon Sep 17 00:00:00 2001 From: Bruno Sutic Date: Thu, 17 Jul 2014 23:12:19 +0200 Subject: [PATCH] Add tmux version check TPM won't work unless tmux version is 1.9 or higher. Closes #2 --- README.md | 2 +- scripts/check_tmux_version.sh | 78 +++++++++++++++++++++++++++++++++++ tpm | 14 +++++-- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100755 scripts/check_tmux_version.sh diff --git a/README.md b/README.md index 8b86da1..f11724b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Installs and loads TMUX plugins. ### Installation -Requirements: `git` +Requirements: `tmux` version 1.9 (or higher), `git` Clone TPM: diff --git a/scripts/check_tmux_version.sh b/scripts/check_tmux_version.sh new file mode 100755 index 0000000..b0aedec --- /dev/null +++ b/scripts/check_tmux_version.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +VERSION="$1" +UNSUPPORTED_MSG="$2" + +get_tmux_option() { + local option=$1 + local default_value=$2 + local option_value=$(tmux show-option -gqv "$option") + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +# Ensures a message is displayed for 5 seconds in tmux prompt. +# Does not override the 'display-time' tmux option. +display_message() { + local message="$1" + + # display_duration defaults to 5 seconds, if not passed as an argument + if [ "$#" -eq 2 ]; then + local display_duration="$2" + else + local display_duration="5000" + fi + + # saves user-set 'display-time' option + local saved_display_time=$(get_tmux_option "display-time" "750") + + # sets message display time to 5 seconds + tmux set-option -gq display-time "$display_duration" + + # displays message + tmux display-message "$message" + + # restores original 'display-time' value + tmux set-option -gq display-time "$saved_display_time" +} + +# this is used to get "clean" integer version number. Examples: +# `tmux 1.9` => `19` +# `1.9a` => `19` +get_digits_from_string() { + local string="$1" + local only_digits="$(echo "$string" | tr -dC '[:digit:]')" + echo "$only_digits" +} + +tmux_version_int() { + local tmux_version_string=$(tmux -V) + echo "$(get_digits_from_string "$tmux_version_string")" +} + +unsupported_version_message() { + if [ -n "$UNSUPPORTED_MSG" ]; then + echo "$UNSUPPORTED_MSG" + else + echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!" + fi +} + +exit_if_unsupported_version() { + local current_version="$1" + local supported_version="$2" + if [ "$current_version" -lt "$supported_version" ]; then + display_message "$(unsupported_version_message)" + exit 1 + fi +} + +main() { + local supported_version_int="$(get_digits_from_string "$VERSION")" + local current_version_int="$(tmux_version_int)" + exit_if_unsupported_version "$current_version_int" "$supported_version_int" +} +main diff --git a/tpm b/tpm index 58b0143..76d6533 100755 --- a/tpm +++ b/tpm @@ -2,6 +2,8 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SUPPORTED_TMUX_VERSION="1.9" + # Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set. # Default tpm path is "$HOME/.tmux/plugins/". That's where all the plugins are # downloaded. @@ -27,9 +29,15 @@ set_tpm_key_binding() { $CURRENT_DIR/scripts/key_binding.sh } +supported_tmux_version_ok() { + $CURRENT_DIR/scripts/check_tmux_version.sh "$SUPPORTED_TMUX_VERSION" +} + main() { - set_tpm_path - set_tpm_key_binding - source_plugins + if supported_tmux_version_ok; then + set_tpm_path + set_tpm_key_binding + source_plugins + fi } main