From ea942355ab319406057d0488ef42fb6a653c3772 Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Wed, 6 Sep 2023 04:36:14 +0200 Subject: [PATCH] feat: templ_static_files_validator super_build.bat script was removed because it became unnecessary after transitioning to a Docker-based build process which provides cross-platform build capability more efficiently (and Windows scripting sucks). Also added templ_static_files_validator.sh that validates existence of files linked in HTML within the specified directory. Can be useful when working on frontend to make sure static files will load properly. --- super_build.bat | 37 ------------------------ templ_static_files_validator.sh | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 37 deletions(-) delete mode 100644 super_build.bat create mode 100644 templ_static_files_validator.sh diff --git a/super_build.bat b/super_build.bat deleted file mode 100644 index 535db9f..0000000 --- a/super_build.bat +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -setlocal - -set "GOARCH=amd64" -set "OUTPUT_DIR=./bin" - -set "GO_FILE_PATH=./main/main.go" -set "PROGRAM_NAME=GohCMS" - -REM Compile for Windows -set "GOOS=windows" -go build -o "%OUTPUT_DIR%\%PROGRAM_NAME%_windows.exe" "%GO_FILE_PATH%" -if %errorlevel% neq 0 ( - echo Compilation for Windows failed. - exit /b %errorlevel% -) - -REM Compile for Linux -set "GOOS=linux" -go build -o "%OUTPUT_DIR%\%PROGRAM_NAME%_linux" "%GO_FILE_PATH%" -if %errorlevel% neq 0 ( - echo Compilation for Linux failed. - exit /b %errorlevel% -) - -REM Compile for macOS -set "GOOS=darwin" -go build -o "%OUTPUT_DIR%\%PROGRAM_NAME%_darwin" "%GO_FILE_PATH%" -if %errorlevel% neq 0 ( - echo Compilation for macOS failed. - exit /b %errorlevel% -) - -echo Compilation successful for all platforms. - -endlocal diff --git a/templ_static_files_validator.sh b/templ_static_files_validator.sh new file mode 100644 index 0000000..786c3c3 --- /dev/null +++ b/templ_static_files_validator.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +find_html_files() { + local directory="$1" + find "$directory" -type f -name "*.html" +} + +extract_referenced_files() { + local html_file="$1" + grep -oP '(?<=src="/static/|href="/static/)[^"]+' "$html_file" +} + +is_link() { + local path="$1" + [[ "$path" =~ ^https?://.* ]] +} + +validate_referenced_files() { + local source_dir="$1" + local target_dir="$2" + + local html_files + html_files=$(find_html_files "$source_dir") + + for html_file in $html_files; do + local referenced_files + referenced_files=$(extract_referenced_files "$html_file") + + for referenced_file in $referenced_files; do + referenced_file="${referenced_file#/}" + + if is_link "$referenced_file"; then + continue + fi + + local full_referenced_path="$target_dir$referenced_file" + + if [ ! -e "$full_referenced_path" ]; then + echo "Error: $full_referenced_path not found (referenced in $html_file)" + exit 1 + fi + done + done +} + +source_dir="./adapters/secondary/gateways/web/templates/" +target_dir="./api/static/" + +validate_referenced_files "$source_dir" "$target_dir" + +echo "All files referenced in HTML files are present in $target_dir"