sync-apps.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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_passwd" "v1.1.1"
  52. download_zip "emqx_auth_mnesia" "e4.2.2"
  53. for app in ${apps[@]}; do
  54. download_zip "$app" "$default_vsn"
  55. done
  56. extract_zip(){
  57. local app="$1"
  58. local ref="$2"
  59. local vsn_arg="${3:-}"
  60. local vsn_dft="$(echo "$ref" | tr '/' '-')"
  61. local vsn
  62. if [ -n "$vsn_arg" ]; then
  63. vsn="$vsn_arg"
  64. else
  65. vsn="$vsn_dft"
  66. fi
  67. local file="tmp/${app}-${vsn_dft}.zip"
  68. local repo="$(echo "$app" | sed 's#_#-#g')"
  69. unzip "$file" -d apps/
  70. mv "apps/${repo}-${vsn}/" "apps/$app/"
  71. }
  72. extract_zip "emqx_passwd" "v1.1.1" "1.1.1"
  73. extract_zip "emqx_auth_mnesia" "e4.2.2" "e4.2.2"
  74. for app in ${apps[@]}; do
  75. extract_zip "$app" "$default_vsn"
  76. done
  77. cleanup_app(){
  78. local app="$1"
  79. pushd "apps/$app"
  80. rm -f Makefile rebar.config.script
  81. rm -rf ".github" ".ci"
  82. rm -rf src/*.app.src.script
  83. rm -rf src/*.appup.src
  84. popd
  85. }
  86. apps+=( "emqx_passwd" "emqx_auth_mnesia" )
  87. for app in ${apps[@]}; do
  88. cleanup_app $app
  89. done