blob: c7b5d4e4d74bdc02bd7735babb78e55fcb48ba7f [file] [log] [blame] [edit]
#!/bin/bash
# Identify the highest versioned directory
HIGHEST=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1)
# Check that highest exists
if [ -z "$HIGHEST" ]; then
echo "❌ Error: No wasm-X.Y versioned directories found in specification/"
exit 1
fi
LATEST="wasm-latest"
# Check that wasm-latest exists
if [ ! -d "$LATEST" ]; then
echo "❌ Error: $LATEST does not exist."
exit 1
fi
# Sync the highest version with wasm-latest, depending on which is newer
echo "Synchronizing $HIGHEST with $LATEST..."
HIGHEST_FILES=$(cd $HIGHEST && ls *.spectec)
LATEST_FILES=$(cd $LATEST && ls *.spectec)
LATEST_CHANGED=0
HIGHEST_CHANGED=0
for FILE in $HIGHEST_FILES; do
if [ ! -f "$LATEST/$FILE" ]; then
echo "Added file $HIGHEST/$FILE"
((++HIGHEST_CHANGED))
elif [ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then
echo "Modified file $HIGHEST/$FILE"
((++HIGHEST_CHANGED))
fi
done
for FILE in $LATEST_FILES; do
if [ ! -f "$HIGHEST/$FILE" ]; then
echo "Added file $LATEST/$FILE"
((++LATEST_CHANGED))
elif [ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then
echo "Modified file $LATEST/$FILE"
((++LATEST_CHANGED))
fi
done
if [ $LATEST_CHANGED -gt 0 ] && [ $HIGHEST_CHANGED -gt 0 ]; then
echo "❌ Error: Changes in both $HIGHEST and $LATEST."
exit 1
fi
for FILE in $HIGHEST_FILES; do
if [ ! -f "$LATEST/$FILE" ] || ([ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then
cp "$HIGHEST/$FILE" "$LATEST/$FILE"
fi
done
for FILE in $LATEST_FILES; do
if [ ! -f "$HIGHEST/$FILE" ] || ([ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then
cp "$LATEST/$FILE" "$HIGHEST/$FILE"
fi
done