From 0d69d6412f584755de419a0b73d58e6cf9df24eb Mon Sep 17 00:00:00 2001 From: Jorge Morante Date: Sun, 9 Apr 2017 17:40:15 +0200 Subject: [PATCH] improving health cheack and adding at least gawk 4 --- circle.yml | 2 +- scripts/health-check.sh | 43 +++++++++++++++++++++++++------------ test/provisioning/ubuntu.sh | 8 ++++--- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/circle.yml b/circle.yml index 973ed0a..8487f6c 100644 --- a/circle.yml +++ b/circle.yml @@ -1,6 +1,6 @@ dependencies: pre: - - if [[ ! -e tmux-2.2 ]]; then sudo bash ./test/provisioning/ubuntu.sh; fi + - sudo bash ./test/provisioning/ubuntu.sh - sudo mkdir -p /home/vagrant/ && sudo chmod a+w /home/vagrant && ln -s $(pwd) /home/vagrant/shared - tmux -V - gawk -W version diff --git a/scripts/health-check.sh b/scripts/health-check.sh index a4d10da..5351fca 100755 --- a/scripts/health-check.sh +++ b/scripts/health-check.sh @@ -4,7 +4,7 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $CURRENT_DIR/utils.sh REQUIRED_BASH_MAJOR=4 -REQUIRED_TMUX_MAJOR=2 +REQUIRED_GAWK_MAJOR=4 RECOMMENDED_TMUX_MINOR=3 HELP_LINK="https://github.com/Morantron/tmux-fingers/blob/master/docs/health-check.md" @@ -21,6 +21,14 @@ function is_tmux_ready() { fi } +function version_major() { + echo "$1" | cut -f1 -d. | grep -Eo "[0-9]" +} + +function version_minor() { + echo "$1" | cut -f2 -d. | grep -Eo "[0-9]" +} + function program_exists() { local prog="$1" @@ -98,34 +106,41 @@ function dump_log() { function perform_health_check() { local healthy=1 + # BASH_VERSION is a global + local TMUX_VERSION=$(tmux -V | grep -Eio "[0-9]+(\.[0-9a-z])*$") + local GAWK_VERSION="" + + if [[ $(program_exists "gawk") = "1" ]]; then + GAWK_VERSION=$(gawk -W version | grep -Eo "[0-9]+\.[0-9]\.[0-9]" | head -n 1) + fi + FINGERS_SKIP_HEALTH_CHECK=$(tmux show-option -gqv @fingers-skip-health-check) if [[ $FINGERS_SKIP_HEALTH_CHECK -eq 1 ]]; then return fi - if [[ $(program_exists "gawk") = "0" ]]; then - log_message "* 'gawk' not found" + if [[ $(program_exists "gawk") = 0 ]]; then + log_message " * 'gawk' not found" healthy=0 fi - BASH_MAJOR=$(echo "$BASH_VERSION" | grep -Eo "^[0-9]") - - if [[ "$BASH_MAJOR" -lt "$REQUIRED_BASH_MAJOR" ]]; then - log_message " * Bash version \"$BASH_VERSION\" is too old." + if [[ $(version_major "$BASH_VERSION") -lt "$REQUIRED_BASH_MAJOR" ]]; then + log_message " * bash version \"$BASH_VERSION\" is too old. bash $REQUIRED_BASH_MAJOR.x+ is required." healthy=0 fi - TMUX_VERSION=$(tmux -V | grep -Eio "[0-9]+(\.[0-9a-z])*$") - TMUX_MAJOR=$(echo "$TMUX_VERSION" | cut -f1 -d.) - TMUX_MINOR=$(echo "$TMUX_VERSION" | cut -f2 -d. | grep -Eo "[0-9]") - - if [[ $TMUX_MAJOR -lt $REQUIRED_TMUX_MAJOR ]]; then - log_message " * tmux version \"$TMUX_VERSION\" is too old." + if [[ $(program_exists "gawk") = 1 ]] && [[ $(version_major "$GAWK_VERSION") -lt "$REQUIRED_GAWK_MAJOR" ]]; then + log_message " * gawk version \"$GAWK_VERSION\" is too old. gawk $REQUIRED_GAWK_MAJOR.x+ is required." healthy=0 fi - if [[ $TMUX_MAJOR -eq $REQUIRED_TMUX_MAJOR ]] && [[ $TMUX_MINOR -lt $RECOMMENDED_TMUX_MINOR ]]; then + if [[ $(version_major "$TMUX_VERSION") -lt $REQUIRED_TMUX_MAJOR ]]; then + log_message " * tmux version \"$TMUX_VERSION\" is too old. tmux $REQUIRED_TMUX_MAJOR.$RECOMMENDED_TMUX_MINOR+ is required." + healthy=0 + fi + + if [[ $(version_major "$TMUX_VERSION") -eq $REQUIRED_TMUX_MAJOR ]] && [[ $(version_minor "$TMUX_VERSION") -lt $RECOMMENDED_TMUX_MINOR ]]; then echo " * WARNING: tmux 2.2+ is recommended" fi diff --git a/test/provisioning/ubuntu.sh b/test/provisioning/ubuntu.sh index e79c61e..2d20a80 100644 --- a/test/provisioning/ubuntu.sh +++ b/test/provisioning/ubuntu.sh @@ -1,13 +1,15 @@ #!/bin/sh -apt-get remove -y tmux -apt-get install -y libevent-dev libncurses5-dev expect fish -apt-get install -y gawk +sudo aptitude update +sudo aptitude install -y expect fish gawk useradd -m -p "$(perl -e "print crypt('fishman','sa');")" -s "/usr/bin/fish" fishman wget https://github.com/tmux/tmux/releases/download/2.2/tmux-2.2.tar.gz +# install tmux from source +sudo aptitude remove -y tmux +sudo aptitude install -y libevent-dev libncurses5-dev tar xvzf tmux-2.2.tar.gz cd tmux-2.2/ || echo "Could not find tmux-2.2/ folder" || exit 1