diff --git a/.travis.yml b/.travis.yml index 11c7055380..3d7e65b748 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,3 +9,4 @@ addons: script: - bin/jsonlint + - bin/check_required_files_present diff --git a/bin/check_required_files_present b/bin/check_required_files_present new file mode 100755 index 0000000000..a1908815ea --- /dev/null +++ b/bin/check_required_files_present @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +MISSING_FILES=0 +SHOW_PROGRESS='false' + +if [ ! -d exercises ] ; then + echo "\"exercises\" directory not found, make sure you're running from the repository root" >&2 + exit 1 +fi + +function show_progress { + if [ $SHOW_PROGRESS == 'true' ]; then + echo -n '.' + fi +} + +function require_file { + filename=$1 + if [ ! -f $filename ]; then + echo "required file missing: $filename" >&2 + let "MISSING_FILES+=1" + fi +} + +function check_directory { + directory=$1 + for exercise_directory in $directory/* ; do + show_progress + require_file "$exercise_directory/description.md" + require_file "$exercise_directory/metadata.yml" + done + +} + +while : +do + case "$1" in + -p | --progress) + SHOW_PROGRESS="true" + shift 1 + ;; + *) + check_directory 'exercises' + if [ $SHOW_PROGRESS == 'true' ]; then + echo + echo Done: $MISSING_FILES files missing. + fi + if (( $MISSING_FILES > 0 )); then + exit 1 + else + exit 0 + fi + ;; + esac +done +