sync-apps.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/bin/bash
  2. set -euo pipefail
  3. force="${1:-no}"
  4. apps=(
  5. "emqx_auth_http"
  6. "emqx_auth_jwt"
  7. "emqx_auth_ldap"
  8. "emqx_auth_mongo"
  9. "emqx_auth_mysql"
  10. "emqx_auth_pgsql"
  11. "emqx_auth_redis"
  12. "emqx_bridge_mqtt"
  13. "emqx_coap"
  14. "emqx_dashboard"
  15. "emqx_exhook"
  16. "emqx_exproto"
  17. "emqx_lua_hook"
  18. "emqx_lwm2m"
  19. "emqx_management"
  20. "emqx_plugin_template"
  21. "emqx_prometheus"
  22. "emqx_psk_file"
  23. "emqx_recon"
  24. "emqx_retainer"
  25. "emqx_rule_engine"
  26. "emqx_sasl"
  27. "emqx_sn"
  28. "emqx_stomp"
  29. "emqx_telemetry"
  30. "emqx_web_hook")
  31. if git status --porcelain | grep -qE 'apps/'; then
  32. echo 'apps dir is not git-clear, refuse to sync'
  33. # exit 1
  34. fi
  35. rm -rf apps/emqx_*
  36. mkdir -p tmp/
  37. download_zip() {
  38. local app="$1"
  39. local ref="$2"
  40. local vsn="$(echo "$ref" | tr '/' '-')"
  41. local file="tmp/${app}-${vsn}.zip"
  42. if [ -f "$file" ] && [ "$force" != "force" ]; then
  43. return 0
  44. fi
  45. local repo="$(echo "$app" | sed 's#_#-#g')"
  46. local url="https://github.com/emqx/$repo/archive/$ref.zip"
  47. echo "downloading ${url}"
  48. curl -fLsS -o "$file" "$url"
  49. }
  50. default_vsn="dev/v4.3.0"
  51. download_zip "emqx_auth_mnesia" "e4.2.2"
  52. for app in ${apps[@]}; do
  53. download_zip "$app" "$default_vsn"
  54. done
  55. extract_zip(){
  56. local app="$1"
  57. local ref="$2"
  58. local vsn_arg="${3:-}"
  59. local vsn_dft="$(echo "$ref" | tr '/' '-')"
  60. local vsn
  61. if [ -n "$vsn_arg" ]; then
  62. vsn="$vsn_arg"
  63. else
  64. vsn="$vsn_dft"
  65. fi
  66. local file="tmp/${app}-${vsn_dft}.zip"
  67. local repo="$(echo "$app" | sed 's#_#-#g')"
  68. unzip "$file" -d apps/
  69. mv "apps/${repo}-${vsn}/" "apps/$app/"
  70. }
  71. extract_zip "emqx_auth_mnesia" "e4.2.2" "e4.2.2"
  72. for app in ${apps[@]}; do
  73. extract_zip "$app" "$default_vsn"
  74. done
  75. cleanup_app(){
  76. local app="$1"
  77. pushd "apps/$app"
  78. rm -f Makefile rebar.config.script
  79. rm -rf ".github" ".ci"
  80. rm -rf src/*.app.src.script
  81. rm -rf src/*.appup.src
  82. popd
  83. }
  84. apps+=( "emqx_auth_mnesia" )
  85. for app in ${apps[@]}; do
  86. cleanup_app $app
  87. done