From e2c3407fa0e0385b2ecea326fc103a51a776982a Mon Sep 17 00:00:00 2001 From: Julien Dufresne Date: Sun, 10 Jul 2016 15:47:25 +0200 Subject: [PATCH] Installs lsb_release package if it was not found (#38) --- src/_lsb_release.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/_report.sh | 18 ++++++++++++++++-- test.sh | 1 + 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 src/_lsb_release.sh diff --git a/src/_lsb_release.sh b/src/_lsb_release.sh new file mode 100644 index 0000000..c705a6e --- /dev/null +++ b/src/_lsb_release.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +find_package_manager() { + local package_manager= + for package_manager in 'apt-get' 'yum' + do + if vagrant ssh -- -n "which ${package_manager}" &>/dev/null + then + echo "${package_manager}" + return 0 + fi + done + + return 1 +} + +install_lsb_release_package() { + local package_manager=$(find_package_manager) + local known_package_names='lsb_release redhat-lsb' + + # is it already installed ? + for package_name in ${known_package_names} + do + vagrant ssh -- -n "which lsb_release" &>/dev/null && return 0 + done + + if [ -z "${package_manager}" ] + then + return 1 + fi + + for package_name in ${known_package_names} + do + case "${package_manager}" in + "apt-get") + vagrant ssh -- -n "sudo apt-get install -y ${package_name}" &>/dev/null && return 0 + ;; + "yum") + vagrant ssh -- -n "sudo yum install -y ${package_name}" &>/dev/null && return 0 + ;; + esac + done + + return 1 +} diff --git a/src/_report.sh b/src/_report.sh index 3c9fa89..08b4a51 100644 --- a/src/_report.sh +++ b/src/_report.sh @@ -4,6 +4,8 @@ REPORT_CURRENT_FILE= ensure_report_file_exists() { + [ -z "${REPORT_CURRENT_FILE}" ] && return + local repository_directory="$1" local ansible_role="$2" local report_file="${repository_directory}/reports/${ansible_role}.md" @@ -30,6 +32,8 @@ ensure_report_file_exists() { } report_display_column() { + [ -z "${REPORT_CURRENT_FILE}" ] && return + local pad="$1" local value="$2" @@ -38,14 +42,20 @@ report_display_column() { } report_failure() { + [ -z "${REPORT_CURRENT_FILE}" ] && return + printf "| %s " "![FAIL](https://img.shields.io/badge/status-fail-red.svg)" >> ${REPORT_CURRENT_FILE} } report_success() { + [ -z "${REPORT_CURRENT_FILE}" ] && return + printf "| %s " "![OK](https://img.shields.io/badge/status-pass-brightgreen.svg)" >> ${REPORT_CURRENT_FILE} } save_report() { + [ -z "${REPORT_CURRENT_FILE}" ] && return + local report_file="$1" local distribution=$(cat "${REPORT_CURRENT_FILE}"|cut -d '|' -f 2 |sed 's/^\s*//'|sed 's/\s*$//') local new_line= @@ -65,6 +75,12 @@ save_report() { } start_new_report() { + REPORT_CURRENT_FILE=$(readlink -m "report_line.md") + install_lsb_release_package || { + REPORT_CURRENT_FILE= + warning "Unable to install lsb_release binary on the guest. No reports will be generated" + return 0 + } local id="$(vagrant ssh -- -n 'lsb_release --short --id')" local release="$(vagrant ssh -- -n 'lsb_release --short --release')" local distribution="$id $release" @@ -75,8 +91,6 @@ start_new_report() { distribution="$distribution ($codename)" fi - REPORT_CURRENT_FILE=$(readlink -m "report_line.md") - report_display_column "| Distribution |" "$distribution" >> "${REPORT_CURRENT_FILE}" report_display_column "| last check date |" "$(date +"%F %T")" >> "${REPORT_CURRENT_FILE}" } diff --git a/test.sh b/test.sh index 97c3cac..fed7bf8 100755 --- a/test.sh +++ b/test.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash REPOSITORY_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +. "${REPOSITORY_DIRECTORY}/src/_lsb_release.sh" . "${REPOSITORY_DIRECTORY}/src/_option_resolver.sh" . "${REPOSITORY_DIRECTORY}/src/_print.sh" . "${REPOSITORY_DIRECTORY}/src/_report.sh"