#!/bin/bash
set -euo pipefail

SRC=$(find . -name '*.go' -not -path "./vendor/*")

echo "checking gofmt"
res=$(gofmt -d $SRC)
echo "$res"
test -z "$res"

source ./build

echo "Running tests"
go test ./... -cover

echo "Checking docs"
shopt -s nullglob
mkdir tmpdocs
trap 'rm -r tmpdocs' EXIT
# Create files-dir contents expected by configs
mkdir -p tmpdocs/files-dir/tree
touch tmpdocs/files-dir/{config.ign,ca.pem,file,file-epilogue,local-file3}

for doc in docs/*md
do
	echo "Checking $doc"
	# split each doc into a bunch of tmpfiles then run fcct on them
	sed -n '/^<!-- fedora-coreos-config -->/,/^```$/ p' < ${doc} \
		| csplit - '/<!-- fedora-coreos-config -->/' '{*}' -z --prefix "tmpdocs/fcc_$(basename ${doc%.*})_" -q

	for i in tmpdocs/fcc_*
	do
		echo "Checking $i"
		cat "$i" | tail -n +3 | head -n -1 \
			| ${BIN_PATH}/${NAME} --strict --files-dir tmpdocs/files-dir > /dev/null \
			|| (cat -n "$i" && false)
	done
	rm -f tmpdocs/fcc_*
done

echo ok
