Skip to content

Commit 371515a

Browse files
authored
Update build-inline.sh
1 parent 5074417 commit 371515a

1 file changed

Lines changed: 30 additions & 23 deletions

File tree

Build/Buildscripts/build-inline.sh

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
#!/bin/bash
2+
set -euo pipefail
3+
24
echo "Starting inlining process..."
3-
DIST_DIR="../dist"
5+
6+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7+
DIST_DIR="$SCRIPT_DIR/../dist"
8+
49
HTML_FILE="$DIST_DIR/index.html"
510
CSS_FILE="$DIST_DIR/styles.css"
611
JS_FILE="$DIST_DIR/main.js"
@@ -19,42 +24,44 @@ cp "$HTML_FILE" "$OUTPUT_FILE"
1924
INDENTED_CSS=$(sed 's/^/ /' "$CSS_FILE")
2025
INDENTED_JS=$(sed 's/^/ /' "$JS_FILE")
2126

22-
# Step 3: Replace <link> and <script> tags with placeholders (only those marked for inlining)
27+
# Step 3: Replace <link> and <script> tags with placeholders
2328
sed -i.bak 's|<link[^>]*data-inline="true"[^>]*href="styles\.css"[^>]*>|@@INLINE_CSS@@|g' "$OUTPUT_FILE"
2429
sed -i.bak "s|<link[^>]*data-inline=\"true\"[^>]*href='styles\.css'[^>]*>|@@INLINE_CSS@@|g" "$OUTPUT_FILE"
2530
sed -i.bak 's|<script[^>]*data-inline="true"[^>]*src="main\.js"[^>]*></script>|@@INLINE_JS@@|g' "$OUTPUT_FILE"
2631
sed -i.bak "s|<script[^>]*data-inline=\"true\"[^>]*src='main\.js'[^>]*></script>|@@INLINE_JS@@|g" "$OUTPUT_FILE"
2732

28-
# Step 4: Write the indented CSS and JS to temporary files
29-
echo " <style>" > /tmp/inlined_css
30-
echo "$INDENTED_CSS" >> /tmp/inlined_css
31-
echo " </style>" >> /tmp/inlined_css
33+
# Step 4: Write indented CSS and JS to temporary files
34+
INLINE_CSS_FILE=$(mktemp)
35+
INLINE_JS_FILE=$(mktemp)
36+
37+
{
38+
echo " <style>"
39+
echo "$INDENTED_CSS"
40+
echo " </style>"
41+
} > "$INLINE_CSS_FILE"
3242

33-
echo " <script>" > /tmp/inlined_js
34-
echo "$INDENTED_JS" >> /tmp/inlined_js
35-
echo " </script>" >> /tmp/inlined_js
43+
{
44+
echo " <script>"
45+
echo "$INDENTED_JS"
46+
echo " </script>"
47+
} > "$INLINE_JS_FILE"
3648

37-
# Step 5: Replace placeholders with actual content
38-
# Use a different approach for multiline replacement
39-
awk '
49+
# Step 5: Replace placeholders with inline content
50+
awk -v css="$INLINE_CSS_FILE" -v js="$INLINE_JS_FILE" '
4051
/@@INLINE_CSS@@/ {
41-
while ((getline line < "/tmp/inlined_css") > 0) {
42-
print line
43-
}
44-
close("/tmp/inlined_css")
52+
while ((getline line < css) > 0) print line
53+
close(css)
4554
next
4655
}
4756
/@@INLINE_JS@@/ {
48-
while ((getline line < "/tmp/inlined_js") > 0) {
49-
print line
50-
}
51-
close("/tmp/inlined_js")
57+
while ((getline line < js) > 0) print line
58+
close(js)
5259
next
5360
}
5461
{ print }
5562
' "$OUTPUT_FILE" > "$OUTPUT_FILE.tmp" && mv "$OUTPUT_FILE.tmp" "$OUTPUT_FILE"
5663

57-
# Clean up temporary files and backup
58-
rm -f /tmp/inlined_css /tmp/inlined_js "$OUTPUT_FILE.bak"
64+
# Clean up
65+
rm -f "$INLINE_CSS_FILE" "$INLINE_JS_FILE" "$OUTPUT_FILE.bak"
5966

60-
echo "Inlined output written to $OUTPUT_FILE"
67+
echo "Inlined output written to $OUTPUT_FILE"

0 commit comments

Comments
 (0)