generate_desktop_app_project.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/bin/bash
  2. # Generate the desktop app project by extracting source from the cpp-httplib book.
  3. # Usage: generate_desktop_app_project.sh <output-dir>
  4. set -euo pipefail
  5. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  6. OUT_DIR="${1:?Usage: $0 <output-dir>}"
  7. BASE_URL="https://raw.githubusercontent.com/yhirose/cpp-httplib/master/docs-src/pages/ja/llm-app"
  8. CACHE_DIR="$SCRIPT_DIR/.cache"
  9. source "$SCRIPT_DIR/extract_code.sh"
  10. # --- Helper: download markdown files (always fetch latest) ---
  11. fetch_md() {
  12. local name="$1"
  13. local path="$CACHE_DIR/$name"
  14. curl -sfL "$BASE_URL/$name" -o "$path" || { echo "ERROR: Failed to download $name" >&2; return 1; }
  15. echo "$path"
  16. }
  17. # --- Main ---
  18. echo "=== Generating desktop app project ==="
  19. mkdir -p "$CACHE_DIR" "$OUT_DIR/src" "$OUT_DIR/public"
  20. CH05=$(fetch_md "ch05-web-ui.md")
  21. CH06=$(fetch_md "ch06-desktop-app.md")
  22. echo "Extracting source files..."
  23. extract_code "$CH06" "CMakeLists.txt" > "$OUT_DIR/CMakeLists.txt"
  24. extract_code "$CH06" "main.cpp" > "$OUT_DIR/src/main.cpp"
  25. extract_code "$CH05" "index.html" > "$OUT_DIR/public/index.html"
  26. extract_code "$CH05" "style.css" > "$OUT_DIR/public/style.css"
  27. extract_code "$CH05" "script.js" > "$OUT_DIR/public/script.js"
  28. echo "=== Done ==="
  29. echo "Generated files in: $OUT_DIR"