|
- #!/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
|