#!/bin/bash

# Test manifest syntax
echo "Testing Puppet manifest syntax..."
find /build -name "*.pp" | xargs puppet parser validate

SYNTAX_STATUS=$?
if [ "$SYNTAX_STATUS" != "0" ]; then
  echo "Puppet manifest syntax: FAILED"
  echo "Exited with $SYNTAX_STATUS"
  exit $SYNTAX_STATUS
fi

echo "Puppet manifest syntax: PASS"

# Make sure PyYAML is installed
python -c "import yaml" || {
    echo "PyYAML is not installed!"
    echo "Syntax testing aborted."
    exit 1
}

# Test Hiera YAML syntax
# Ruby's `YAML.load_file()` doesn't catch syntax errors in the first line (---)
# Python's `yaml.load()` does, so we use that instead :)
echo "Testing Hiera YAML syntax..."
for file_name in $(find hiera -name "*.yaml"); do
    python -c "import yaml
with open('${file_name}') as f:
    yaml.safe_load(f)" || {
        echo "Invalid YAML file: ${file_name}"
	exit 1
    }
done
echo "Hiera YAML syntax: PASS"
