hadolint/hadolint.sh

82 lines
2.1 KiB
Bash
Raw Normal View History

2021-05-31 13:57:42 +02:00
#!/bin/bash
2020-12-05 19:38:01 +01:00
# The problem-matcher definition must be present in the repository
# checkout (outside the Docker container running hadolint). We copy
# problem-matcher.json to the home folder.
PROBLEM_MATCHER_FILE="/problem-matcher.json"
if [ -f "$PROBLEM_MATCHER_FILE" ]; then
cp "$PROBLEM_MATCHER_FILE" "$HOME/"
fi
2023-09-01 11:28:27 +05:30
# After the run has finished, we remove the problem-matcher.json from
# the repository so we don't leave the checkout dirty. We also remove
# the matcher so it won't take effect in later steps.
cleanup() {
echo "::remove-matcher owner=brpaz/hadolint-action::"
}
trap cleanup EXIT
2020-12-05 19:38:01 +01:00
echo "::add-matcher::$HOME/problem-matcher.json"
if [ -n "$HADOLINT_CONFIG" ]; then
HADOLINT_CONFIG="-c ${HADOLINT_CONFIG}"
fi
if [ -z "$HADOLINT_TRUSTED_REGISTRIES" ]; then
unset HADOLINT_TRUSTED_REGISTRIES
fi
COMMAND="hadolint $HADOLINT_CONFIG"
2021-05-31 13:57:42 +02:00
if [ "$HADOLINT_RECURSIVE" = "true" ]; then
shopt -s globstar
filename="${!#}"
flags="${*:1:$#-1}"
2023-09-01 11:28:27 +05:30
# Check if filename and directory name are the same
if [ "$(basename "$filename")" != "$(dirname "$filename")" ]; then
# Run hadolint command and save the results to a variable
RESULTS=$(eval "$COMMAND $flags" -- **/"$filename")
# Check if HADOLINT_OUTPUT is specified and save results to file
if [ -n "$HADOLINT_OUTPUT" ]; then
if [ -f "$HADOLINT_OUTPUT" ]; then
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
fi
echo -n "$RESULTS" >"$HADOLINT_OUTPUT"
fi
else
# Skip the check if filename and directory name are the same
RESULTS=""
fi
2021-05-31 13:57:42 +02:00
else
flags=$*
2023-09-01 11:28:27 +05:30
# Run hadolint command and save the results to a variable
RESULTS=$(eval "$COMMAND" "$flags")
2023-09-01 11:28:27 +05:30
# Check if HADOLINT_OUTPUT is specified and save results to file
if [ -n "$HADOLINT_OUTPUT" ]; then
if [ -f "$HADOLINT_OUTPUT" ]; then
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
fi
echo -n "$RESULTS" >"$HADOLINT_OUTPUT"
fi
2021-05-31 13:57:42 +02:00
fi
{
echo "results<<EOF"
echo "$RESULTS"
echo "EOF"
} >>"$GITHUB_OUTPUT"
2022-03-31 11:14:55 +02:00
{
echo "HADOLINT_RESULTS<<EOF"
echo "$RESULTS"
echo "EOF"
} >>"$GITHUB_ENV"
2022-03-31 12:49:42 +02:00
[ -z "$HADOLINT_OUTPUT" ] || echo "Hadolint output saved to: $HADOLINT_OUTPUT"
2022-03-24 12:57:02 +00:00
exit $FAILED