#!/usr/bin/env bash
set -e

# --------------------------------------------------------------------
# Copies all the corpus files, dict and options to the $OUT directory.
# This script is only used on oss-fuzz directly
# --------------------------------------------------------------------

fuzzerFiles=$(find $SRC/open62541/tests/fuzz/ -name "*.cc")

for F in $fuzzerFiles; do
	fuzzerName=$(basename $F .cc)

	if [ -d "$SRC/open62541/tests/fuzz/${fuzzerName}_corpus" ]; then

		# first combine any files in subfolders to one single binary file
		subDirs=$(find $SRC/open62541/tests/fuzz/${fuzzerName}_corpus -maxdepth 1 -mindepth 1 -type d)
		for dirPath in $subDirs; do
			dir=$(basename $dirPath)
			dirPathTmp=$SRC/open62541/tests/fuzz/${fuzzerName}_corpus/${dir}_tmp
			if [ -d  $dirPathTmp ]; then
				rm -r $dirPathTmp
			fi
			mkdir $dirPathTmp
			# copy the files to get unique names
			binFiles=$(find $dirPath -name "*.bin")
			for binFile in $binFiles; do
				binFileName=$(basename $binFile .bin)
				cp $binFile $dirPathTmp/${dir}_${binFileName}.bin
			done

			outPath=$dirPathTmp/$dir.bin
			cat $dirPath/*.bin > $outPath

			zip -j $OUT/${fuzzerName}_seed_corpus.zip $dirPathTmp/*

			rm -r $dirPathTmp

		done

		zip -j $OUT/${fuzzerName}_seed_corpus.zip $SRC/open62541/tests/fuzz/${fuzzerName}_corpus/*
	fi
done

cp $SRC/open62541/tests/fuzz/*.dict $SRC/open62541/tests/fuzz/*.options $OUT/