#!/bin/sh set -eu root_dir=$(cd "$(dirname "$0")" && pwd) . "$root_dir/../shared/build-lib.sh" src_html="$root_dir/template.html" output_dir="$root_dir/dist" output_html="$output_dir/transmittal.html" mkdir -p "$output_dir" ensure_exists "$src_html" readme_file="$root_dir/README.md" ensure_exists "$readme_file" css_temp=$(mktemp) js_raw=$(mktemp) js_temp=$(mktemp) md_temp=$(mktemp) cleanup() { rm -f "$css_temp" "$js_raw" "$js_temp" "$md_temp"; } trap cleanup EXIT # CSS files to concatenate in order concat_files \ "../shared/base.css" \ "../shared/toast.css" \ "css/base.css" \ "css/layout.css" \ "css/forms.css" \ "css/table.css" \ "css/remarks.css" \ "css/markdown.css" \ "css/markdown-editor.css" \ "css/filter.css" \ "css/modal.css" \ "css/utilities.css" \ "css/print.css" \ > "$css_temp" # JavaScript files to concatenate in order. Vendored libraries first # (jszip, docx-preview) so window.JSZip + window.docx are defined before # any tool code runs — replaces the previous CDN loadLibrary() calls # scattered through files-preview.js. xlsx stays CDN-loaded on demand. concat_files \ "../shared/vendor/jszip.min.js" \ "../shared/vendor/docx-preview.min.js" \ "../shared/zddc.js" \ "../shared/hash.js" \ "../shared/zddc-source.js" \ "../shared/theme.js" \ "../shared/toast.js" \ "../shared/preview-lib.js" \ "js/app.js" \ "js/reactive.js" \ "js/dom.js" \ "js/util.js" \ "js/json.js" \ "js/hydrate.js" \ "js/state.js" \ "js/mode.js" \ "js/visibility.js" \ "js/live-digest.js" \ "js/files.js" \ "js/files-archive.js" \ "js/files-render.js" \ "js/files-preview.js" \ "../shared/zddc-filter.js" \ "js/filters.js" \ "js/markdown.js" \ "js/markdown-editor.js" \ "js/email-tags.js" \ "js/validation.js" \ "js/security.js" \ "js/verification.js" \ "js/data.js" \ "js/publish.js" \ "js/reset.js" \ "js/publish-modal.js" \ "js/logos.js" \ "js/drop-zones.js" \ "js/focus.js" \ "../shared/help.js" \ "js/main.js" \ > "$js_raw" # Escape ' blocks they get embedded in. escape_js_close_tags "$js_raw" "$js_temp" escape_js_close_tags "$readme_file" "$md_temp" compute_build_label "transmittal" "${1:-}" "${2:-}" awk -v css_file="$css_temp" -v js_file="$js_temp" -v md_file="$md_temp" -v build_label="$build_label" -v is_red="$is_red" -v favicon_uri="$favicon_data_uri" ' BEGIN { css_inserted = 0 js_inserted = 0 help_inserted = 0 in_help = 0 } // { in_help = 1 next } in_help { if ($0 ~ /<\/script>/) { in_help = 0 } next } // { print if (!css_inserted) { print "" css_inserted = 1 } next } /<\/body>/ { if (!js_inserted) { print "" js_inserted = 1 } if (!help_inserted) { print "" help_inserted = 1 } print next } /\{\{BUILD_LABEL\}\}/ { if (is_red == "1") { gsub(/\{\{BUILD_LABEL\}\}/, "" build_label "") } else { gsub(/\{\{BUILD_LABEL\}\}/, build_label) } print next } /\{\{FAVICON\}\}/ { gsub(/\{\{FAVICON\}\}/, favicon_uri) print next } { print } END { if (!css_inserted) { print "" } if (!js_inserted) { print "" } if (!help_inserted) { print "" } } ' "$src_html" > "$output_html" echo "Wrote $output_html" if [ "$is_release" = "1" ]; then promote_release "transmittal" fi