get-dashboard.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. # ensure dir
  4. cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
  5. VERSION="$1"
  6. RELEASE_ASSET_FILE="emqx-dashboard.zip"
  7. if [ -f 'EMQX_ENTERPRISE' ]; then
  8. DASHBOARD_PATH='lib-ee/emqx_dashboard/priv'
  9. DASHBOARD_REPO='emqx-enterprise-dashboard-frontend-src'
  10. AUTH="Authorization: token $(cat scripts/git-token)"
  11. else
  12. DASHBOARD_PATH='lib-ce/emqx_dashboard/priv'
  13. DASHBOARD_REPO='emqx-dashboard-frontend'
  14. AUTH=""
  15. fi
  16. case $(uname) in
  17. *Darwin*) SED="sed -E";;
  18. *) SED="sed -r";;
  19. esac
  20. version() {
  21. grep -oE 'github_ref: (.*)' "$DASHBOARD_PATH/www/version" | $SED 's|github_ref: refs/tags/(.*)|\1|g'
  22. }
  23. if [ -d "$DASHBOARD_PATH/www" ] && [ "$(version)" = "$VERSION" ]; then
  24. exit 0
  25. fi
  26. get_assets(){
  27. # Get the download URL of our desired asset
  28. download_url="$(curl --silent --show-error \
  29. --header "${AUTH}" \
  30. --header "Accept: application/vnd.github.v3+json" \
  31. "https://api.github.com/repos/emqx/${DASHBOARD_REPO}/releases/tags/${VERSION}" \
  32. | jq --raw-output ".assets[] | select(.name==\"${RELEASE_ASSET_FILE}\").url")"
  33. # Get GitHub's S3 redirect URL
  34. redirect_url=$(curl --silent --show-error \
  35. --header "${AUTH}" \
  36. --header "Accept: application/octet-stream" \
  37. --write-out "%{redirect_url}" \
  38. "$download_url")
  39. curl --silent --show-error \
  40. --header "Accept: application/octet-stream" \
  41. --output "${RELEASE_ASSET_FILE}" \
  42. "$redirect_url"
  43. }
  44. get_assets
  45. unzip -q "$RELEASE_ASSET_FILE" -d "$DASHBOARD_PATH"
  46. rm -rf "$DASHBOARD_PATH/www"
  47. mv "$DASHBOARD_PATH/dist" "$DASHBOARD_PATH/www"
  48. rm -rf "$RELEASE_ASSET_FILE"