get-dashboard.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. # ensure dir
  4. cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
  5. RELEASE_ASSET_FILE="emqx-dashboard.zip"
  6. if [ -f 'EMQX_ENTERPRISE' ]; then
  7. VERSION="${EMQX_EE_DASHBOARD_VERSION}"
  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. # have to be resolved with auth and redirect
  12. DIRECT_DOWNLOAD_URL=""
  13. else
  14. VERSION="${EMQX_CE_DASHBOARD_VERSION}"
  15. DASHBOARD_PATH='lib-ce/emqx_dashboard/priv'
  16. DASHBOARD_REPO='emqx-dashboard-frontend'
  17. AUTH=""
  18. DIRECT_DOWNLOAD_URL="https://github.com/emqx/${DASHBOARD_REPO}/releases/download/${VERSION}/emqx-dashboard.zip"
  19. fi
  20. case $(uname) in
  21. *Darwin*) SED="sed -E";;
  22. *) SED="sed -r";;
  23. esac
  24. version() {
  25. grep -oE 'github_ref: (.*)' "$DASHBOARD_PATH/www/version" | $SED 's|github_ref: refs/tags/(.*)|\1|g'
  26. }
  27. if [ -d "$DASHBOARD_PATH/www" ] && [ "$(version)" = "$VERSION" ]; then
  28. exit 0
  29. fi
  30. find_url() {
  31. # Get the download URL of our desired asset
  32. release_url="https://api.github.com/repos/emqx/${DASHBOARD_REPO}/releases/tags/${VERSION}"
  33. release_info="$(curl --silent --show-error --header "${AUTH}" --header "Accept: application/vnd.github.v3+json" "$release_url")"
  34. if ! download_url="$(echo "$release_info" | jq --raw-output ".assets[] | select(.name==\"${RELEASE_ASSET_FILE}\").url" | tr -d '\n' | tr -d '\r')"; then
  35. echo "failed to query $release_url"
  36. echo "${release_info}"
  37. exit 1
  38. fi
  39. # Get GitHub's S3 redirect URL
  40. curl --silent --show-error \
  41. --header "${AUTH}" \
  42. --header "Accept: application/octet-stream" \
  43. --write-out "%{redirect_url}" \
  44. "$download_url"
  45. }
  46. if [ -z "$DIRECT_DOWNLOAD_URL" ]; then
  47. DIRECT_DOWNLOAD_URL="$(find_url)"
  48. fi
  49. curl -L --silent --show-error \
  50. --header "Accept: application/octet-stream" \
  51. --output "${RELEASE_ASSET_FILE}" \
  52. "$DIRECT_DOWNLOAD_URL"
  53. unzip -q "$RELEASE_ASSET_FILE" -d "$DASHBOARD_PATH"
  54. rm -rf "$DASHBOARD_PATH/www"
  55. mv "$DASHBOARD_PATH/dist" "$DASHBOARD_PATH/www"
  56. rm -f "$RELEASE_ASSET_FILE"