11#! /bin/bash
2+ set -euo pipefail
3+
24echo " Starting inlining process..."
3- DIST_DIR=" ../dist"
5+
6+ SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
7+ DIST_DIR=" $SCRIPT_DIR /../dist"
8+
49HTML_FILE=" $DIST_DIR /index.html"
510CSS_FILE=" $DIST_DIR /styles.css"
611JS_FILE=" $DIST_DIR /main.js"
@@ -19,42 +24,44 @@ cp "$HTML_FILE" "$OUTPUT_FILE"
1924INDENTED_CSS=$( sed ' s/^/ /' " $CSS_FILE " )
2025INDENTED_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
2328sed -i.bak ' s|<link[^>]*data-inline="true"[^>]*href="styles\.css"[^>]*>|@@INLINE_CSS@@|g' " $OUTPUT_FILE "
2429sed -i.bak " s|<link[^>]*data-inline=\" true\" [^>]*href='styles\.css'[^>]*>|@@INLINE_CSS@@|g" " $OUTPUT_FILE "
2530sed -i.bak ' s|<script[^>]*data-inline="true"[^>]*src="main\.js"[^>]*></script>|@@INLINE_JS@@|g' " $OUTPUT_FILE "
2631sed -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