Skip to content

Commit fc696cd

Browse files
committed
[spec] Add a sync script for wasm-latest
1 parent 9c4b2cb commit fc696cd

3 files changed

Lines changed: 77 additions & 6 deletions

File tree

specification/Makefile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ check-all: check-1.0 check-2.0 check-3.0 check-latest
3737
@echo All Wasm specs checked OK.
3838

3939
check-diff:
40-
./diff-wasm-latest.sh
40+
bash ./diff-wasm-latest.sh
41+
42+
43+
# Sync
44+
45+
sync-diff:
46+
bash ./sync-wasm-latest.sh
4147

4248

4349
# Build

specification/diff-wasm-latest.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#!/bin/bash
22

33
# Identify the highest versioned directory
4-
HIGHEST_VER=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1)
4+
HIGHEST=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1)
55

6-
if [ -z "$HIGHEST_VER" ]; then
6+
# Check that a highest version exists
7+
if [ -z "$HIGHEST" ]; then
78
echo "❌ Error: No wasm-X.Y versioned directories found in specification/"
89
exit 1
910
fi
@@ -17,14 +18,14 @@ if [ ! -d "$LATEST" ]; then
1718
fi
1819

1920
# Diff the highest version with wasm-latest and check that the diff is empty
20-
echo "Checking for differences between $HIGHEST_VER and $LATEST..."
21+
echo "Checking for differences between $HIGHEST and $LATEST..."
2122

22-
if diff -qr "$HIGHEST_VER" "$LATEST" > /dev/null; then
23+
if diff -qr "$HIGHEST" "$LATEST" > /dev/null; then
2324
echo "✅ Success: Contents match. No changes needed."
2425
else
2526
echo "🔍 Differences detected:"
2627
echo "--------------------------------"
27-
diff -U0 -r "$HIGHEST_VER" "$LATEST"
28+
diff -U0 -r "$HIGHEST" "$LATEST"
2829
echo "--------------------------------"
2930
exit 1
3031
fi

specification/sync-wasm-latest.sh

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/bash
2+
3+
# Identify the highest versioned directory
4+
HIGHEST=$(ls -d wasm-[0-9]* 2>/dev/null | sort -V | tail -n 1)
5+
6+
# Check that highest exists
7+
if [ -z "$HIGHEST" ]; then
8+
echo "❌ Error: No wasm-X.Y versioned directories found in specification/"
9+
exit 1
10+
fi
11+
12+
LATEST="wasm-latest"
13+
14+
# Check that wasm-latest exists
15+
if [ ! -d "$LATEST" ]; then
16+
echo "❌ Error: $LATEST does not exist."
17+
exit 1
18+
fi
19+
20+
# Sync the highest version with wasm-latest, depending on which is newer
21+
echo "Synchronizing $HIGHEST with $LATEST..."
22+
23+
HIGHEST_FILES=$(cd $HIGHEST && ls *.spectec)
24+
LATEST_FILES=$(cd $LATEST && ls *.spectec)
25+
26+
LATEST_CHANGED=0
27+
HIGHEST_CHANGED=0
28+
29+
for FILE in $HIGHEST_FILES; do
30+
if [ ! -f "$LATEST/$FILE" ]; then
31+
echo "Added file $HIGHEST/$FILE"
32+
((++HIGHEST_CHANGED))
33+
elif [ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then
34+
echo "Modified file $HIGHEST/$FILE"
35+
((++HIGHEST_CHANGED))
36+
fi
37+
done
38+
39+
for FILE in $LATEST_FILES; do
40+
if [ ! -f "$HIGHEST/$FILE" ]; then
41+
echo "Added file $LATEST/$FILE"
42+
((++LATEST_CHANGED))
43+
elif [ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null; then
44+
echo "Modified file $LATEST/$FILE"
45+
((++LATEST_CHANGED))
46+
fi
47+
done
48+
49+
if [ $LATEST_CHANGED -gt 0 ] && [ $HIGHEST_CHANGED -gt 0 ]; then
50+
echo "❌ Error: Changes in both $HIGHEST and $LATEST."
51+
exit 1
52+
fi
53+
54+
for FILE in $HIGHEST_FILES; do
55+
if [ ! -f "$LATEST/$FILE" ] || ([ "$HIGHEST/$FILE" -nt "$LATEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then
56+
cp "$HIGHEST/$FILE" "$LATEST/$FILE"
57+
fi
58+
done
59+
60+
for FILE in $LATEST_FILES; do
61+
if [ ! -f "$HIGHEST/$FILE" ] || ([ "$LATEST/$FILE" -nt "$HIGHEST/$FILE" ] && ! diff -q "$HIGHEST/$FILE" "$LATEST/$FILE" >/dev/null); then
62+
cp "$LATEST/$FILE" "$HIGHEST/$FILE"
63+
fi
64+
done

0 commit comments

Comments
 (0)