The main Bubble source repository. Contains the Bubble API server, the web UI, documentation and utilities. https://getbubblenow.com
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

105 righe
3.8 KiB

  1. #!/bin/bash
  2. #
  3. # Prepares the bubble.jar file for active usage.
  4. #
  5. # 1. Update role JSON in bubble-server/src/main/resources/ansible/default_roles.json
  6. # Inserts "tgzB64" value with file://path to tarball
  7. #
  8. # 2. Copy scripts to bubble-server/target/classes/scripts
  9. #
  10. # 3. If the environment variable INSTALL_WEB is equal to "web", also build and install the bubble-web
  11. # site to bubble-server/target/classes/site
  12. #
  13. # Usage:
  14. #
  15. # prep_bubble_jar
  16. #
  17. #
  18. SCRIPT="${0}"
  19. SCRIPT_DIR=$(cd $(dirname ${SCRIPT}) && pwd)
  20. . ${SCRIPT_DIR}/bubble_common
  21. BUBBLE_SERVER="$(cd "${SCRIPT_DIR}/../bubble-server" && pwd)"
  22. CLASSES_DIR="${BUBBLE_SERVER}/target/classes"
  23. DEFAULT_ROLES_RELATIVE="ansible/default_roles.json"
  24. DEFAULT_ROLES="${CLASSES_DIR}/${DEFAULT_ROLES_RELATIVE}"
  25. if [[ ! -f ${DEFAULT_ROLES} ]] ; then
  26. die "default roles file not found: ${DEFAULT_ROLES}"
  27. fi
  28. if [[ -z "${LOCALSTORAGE_BASE_DIR}" ]] ; then
  29. for f in "${HOME}/bubble/current/bubble.env" "${HOME}/.bubble.env" ; do
  30. if [[ -f "${f}" ]] ; then
  31. LOCALSTORAGE_BASE_DIR=$(cat ${f} | grep -v '^#' | grep LOCALSTORAGE_BASE_DIR | awk -F '=' '{print $2}' | tr -d ' ')
  32. break
  33. fi
  34. done
  35. fi
  36. if [[ -z "${LOCALSTORAGE_BASE_DIR}" ]] ; then
  37. echo "Warning: LOCALSTORAGE_BASE_DIR env var not defined and no bubble.env found, using ${HOME}/.bubble_local_storage"
  38. LOCALSTORAGE_BASE_DIR="${HOME}/.bubble_local_storage"
  39. fi
  40. if [[ -z "${BUBBLE_JAR}" ]] ; then
  41. die "bubble jar not found: ${BUBBLE_JAR}"
  42. fi
  43. ROLES_DIR="$(cd "${SCRIPT_DIR}/../automation/roles" && pwd)"
  44. if [[ ! -d ${ROLES_DIR} ]] ; then
  45. die "automation/roles dir not found: ${ROLES_DIR}"
  46. fi
  47. echo "lbs = ${LOCALSTORAGE_BASE_DIR}"
  48. UPDATED="$(mktemp /tmp/default_roles.XXXXXXX.json)"
  49. cd ${ROLES_DIR}
  50. echo "[" > "${UPDATED}"
  51. for role in $(ls -1) ; do
  52. echo "Processing role: ${role}"
  53. ROLE_JSON="${role}/files/bubble_role.json"
  54. if [[ ! -f "${ROLE_JSON}" ]] ; then
  55. die "Json file not found for role ${role}: ${ROLE_JSON}"
  56. fi
  57. if [[ $(cat ${UPDATED} | wc -c) -gt 2 ]] ; then
  58. echo "," >> ${UPDATED}
  59. fi
  60. role_name="$(cat "${ROLE_JSON}" | jq -r .name)"
  61. role_path="automation/roles/${role_name}.tgz"
  62. TGZ_PATH="${LOCALSTORAGE_BASE_DIR}/${role_path}"
  63. mkdir -p $(dirname ${TGZ_PATH}) || die "Error creating parent dir for ${TGZ_PATH}"
  64. tar czf ${TGZ_PATH} ${role}
  65. cat ${ROLE_JSON} | jq --arg tgzB64 "storage://LocalStorage/${role_path}" '. + {tgzB64: $tgzB64}' >> ${UPDATED}
  66. echo "------------------------------"
  67. echo "Generated role JSON: ${role}"
  68. echo "------------------------------"
  69. done
  70. echo "]" >> ${UPDATED}
  71. jq . < ${UPDATED} > ${DEFAULT_ROLES} || die "Error writing ${DEFAULT_ROLES}, maybe some problems with ${UPDATED} ?"
  72. echo "------------------------------------------------------------"
  73. cat "${UPDATED}"
  74. echo "------------------------------------------------------------"
  75. mkdir -p ${CLASSES_DIR}/scripts
  76. for script in run.sh bubble_common bubble bget bpost bposte bput bpute bdelete bscript bmodel bencrypt bdecrypt list_bubble_databases cleanup_bubble_databases ; do
  77. cp ${SCRIPT_DIR}/${script} ${CLASSES_DIR}/scripts || die "Error copying ${SCRIPT_DIR}/${script} -> ${CLASSES_DIR}/scripts"
  78. done
  79. cd ${CLASSES_DIR} && jar uvf ${BUBBLE_JAR} scripts ${DEFAULT_ROLES_RELATIVE} || die "Error updating ${BUBBLE_JAR} with scripts"
  80. echo "Updated $(ls -1 ${ROLES_DIR} | wc -l) roles in ${DEFAULT_ROLES}"
  81. rm -f "${UPDATED}"
  82. if [[ ! -z "${INSTALL_WEB}" && "${INSTALL_WEB}" == "web" ]] ; then
  83. mkdir -p ${CLASSES_DIR}/site
  84. BUBBLE_WEB="$(cd "${SCRIPT_DIR}/../bubble-web" && pwd)"
  85. cd ${BUBBLE_WEB} && npm install && webpack || die "Error building bubble-web"
  86. cp -R ${BUBBLE_WEB}/dist/* ${CLASSES_DIR}/site/ || die "Error copying ${BUBBLE_WEB}/dist/* -> ${CLASSES_DIR}/site/"
  87. cd ${CLASSES_DIR} && jar uvf ${BUBBLE_JAR} site || die "Error updating ${BUBBLE_JAR} with site"
  88. echo "Installed bubble-web to ${CLASSES_DIR}/site/"
  89. fi