52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
# Verifies that files passed in are valid for docker-compose
|
|
set -e
|
|
|
|
# Check if docker or podman commands are available
|
|
if [[ -z "${CONTAINER_ENGINE}" ]]; then
|
|
if command -v docker &>/dev/null; then
|
|
CONTAINER_ENGINE=docker
|
|
elif command -v podman &>/dev/null; then
|
|
CONTAINER_ENGINE=podman
|
|
else
|
|
echo "ERROR: Neither 'docker' or 'podman' were found"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if command -v "${CONTAINER_ENGINE}" &>/dev/null && ${CONTAINER_ENGINE} help compose &> /dev/null; then
|
|
COMPOSE="${CONTAINER_ENGINE} compose"
|
|
elif command -v "${CONTAINER_ENGINE}-compose" &> /dev/null; then
|
|
COMPOSE="${CONTAINER_ENGINE}-compose"
|
|
else
|
|
echo "ERROR: Neither '${CONTAINER_ENGINE}-compose' or '${CONTAINER_ENGINE} compose' were found"
|
|
exit 1
|
|
fi
|
|
|
|
check_file() {
|
|
local file=$1
|
|
env $COMPOSE --file "$file" config --quiet 2>&1 |
|
|
sed "/variable is not set. Defaulting/d"
|
|
return "${PIPESTATUS[0]}"
|
|
}
|
|
|
|
check_files() {
|
|
local all_files=( "$@" )
|
|
has_error=0
|
|
for file in "${all_files[@]}"; do
|
|
if [[ -f "$file" ]]; then
|
|
if ! check_file "$file"; then
|
|
echo "ERROR: $file"
|
|
has_error=1
|
|
fi
|
|
fi
|
|
done
|
|
return $has_error
|
|
}
|
|
|
|
if ! check_files "$@"; then
|
|
echo "Some compose files failed"
|
|
fi
|
|
|
|
exit $has_error
|