espify.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/bash
  2. prefix="dist"
  3. flist="$(find $prefix -type f -name '*.js' -or -name 'index.html' -or -name 'favicon.ico' | sed -e 's/'$prefix'\/*//')"
  4. get_var_name()
  5. {
  6. echo -e "static_$(echo -e $1 | tr -d '_' | tr '/.' '_')"
  7. }
  8. cat <<EOF
  9. #include "gadgety.h"
  10. #include <ESP8266WebServer.h>
  11. EOF
  12. for i in $flist; do
  13. echo -e "unsigned char PROGMEM $(get_var_name $i)[] = {"
  14. gzip -c "$prefix/$i" | xxd -i -c 16
  15. echo -e "};\n"
  16. done
  17. cat <<EOF
  18. static ESP8266WebServer *_server = 0;
  19. #define SERVE_STATIC(p) static void serve_ ## p (void) { \\
  20. _server->sendHeader("Content-Encoding", "gzip"); \\
  21. _server->send_P(200, "text/html", (const char*)p, sizeof(p)); \\
  22. }
  23. static void redirect_index(void)
  24. {
  25. _server->sendHeader("Location", "/");
  26. _server->send(301);
  27. }
  28. EOF
  29. for i in $flist; do
  30. echo -e "SERVE_STATIC($(get_var_name $i))"
  31. done
  32. echo -e "\nvoid gadgety_static_init_server(ESP8266WebServer* server)\n{"
  33. echo -e " _server = server;"
  34. echo -e " server->onNotFound(redirect_index);"
  35. echo -e " server->on(\"/\", serve_static_index_html);"
  36. for i in $flist; do
  37. echo -e " server->on(\"/$i\", serve_$(get_var_name $i));"
  38. done
  39. echo -e "}"