Tristan971/EasyFXML

View on GitHub
build_with_docker.sh

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash

function assert_is_zero() {
    local NAME=$1
    local VALUE=$2

    [[ ${VALUE} -eq 0 ]] && echo "$NAME... OK" || echo "$NAME... NOK! (expect 0 but got: ${VALUE})"
}

function verify_environment() {
    echo "--- Verify environment ---"

    docker ps 1> /dev/null
    assert_is_zero "Docker daemon" "$?"
}

function build_docker_image() {
    echo "--- BUILD DOCKER IMAGE ---"

    IMAGE=$(grep "IMAGE" easyfxml-docker/docker-build.env | cut -d'=' -f2)
    TAG=$(grep "TAG" easyfxml-docker/docker-build.env | cut -d'=' -f2)

    echo "Will build image ${IMAGE}:${TAG}"
    set -x
    docker build "easyfxml-docker" -t "${IMAGE}:${TAG}"
    set +x
    assert_is_zero "Docker build result" "$?"
}

function build_via_docker_image() {
    echo "--- BUILD AND TEST IN DOCKER IMAGE ---"

    local CANDIDATE_IMAGES
    CANDIDATE_IMAGES=$(docker images | grep "${IMAGE}" | grep "${TAG}")
    assert_is_zero "Image available" "$?"

    printf "Candidate images:\n%s\n" "$CANDIDATE_IMAGES"

    local MOUNTED_DIR
    local M2_DIR_ABSOLUTE
    if [ "$(command -v cygpath)" ]; then
        MOUNTED_DIR=$(cygpath -aw .)
        M2_DIR_ABSOLUTE=$(cygpath -aw "$HOME/.m2")
    else
        MOUNTED_DIR=$(pwd)
        M2_DIR_ABSOLUTE="$HOME/.m2"
    fi

    local IMAGE_PROJECT_DIR="/root/build"

    set -x

    docker run  -v "${MOUNTED_DIR}":${IMAGE_PROJECT_DIR} -v "${M2_DIR_ABSOLUTE}":/root/.m2 -it "${IMAGE}":"${TAG}" clean install
}

verify_environment
build_docker_image
build_via_docker_image