68 lines
1.7 KiB

  1. #!/bin/bash
  2. ## Init is run on host
  3. ## For now it is run every time the script is launched, but
  4. ## it should be launched only once after build.
  5. ## Accessible variables are:
  6. ## - SERVICE_NAME Name of current service
  7. ## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
  8. ## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
  9. ## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
  10. LIB="$SERVICE_DATASTORE/var/lib/odoo"
  11. . lib/common
  12. set -e
  13. odoo_uid=$(get_odoo_uid)
  14. mkdir -p "$LIB"
  15. ## XXXvlab: this one can fail if files are removed (from sessions dir)
  16. find "$LIB" \! -user "$odoo_uid" -print0 | while read-0 f; do
  17. chown -v "$odoo_uid" "$f" || exit 1
  18. done
  19. ## workers management
  20. workers=$(options-get workers 2>/dev/null) || true
  21. workers=${workers:-1}
  22. modules=$(options-get modules 2>/dev/null | yaml_get_values ,) || true
  23. if [ -z "$modules" ]; then
  24. modules=base
  25. else
  26. modules="base,${modules}"
  27. fi
  28. ## config file
  29. conf=$(options-get conf 2>/dev/null) || true
  30. CONFIGFILE="$SERVICE_CONFIGSTORE/etc/odoo/tecnativa.conf"
  31. mkdir -p "${CONFIGFILE%/*}"
  32. while read-0 section section_def; do
  33. debug "'$section' '$section_def'"
  34. printf "[%s]\n" "$section"
  35. while read-0 key val; do
  36. debug "'$key' '$val'"
  37. key_option=${key//-/_}
  38. printf "%s=%s\n" "$key_option" "$val"
  39. done < <(e "$section_def" | shyaml key-values-0)
  40. done < <(e "$conf" | shyaml key-values-0) > "$CONFIGFILE"
  41. if [ -s "$CONFIGFILE" ]; then
  42. init-config-add "
  43. $SERVICE_NAME:
  44. volumes:
  45. - \"$CONFIGFILE:/opt/odoo/custom/conf.d/compose.conf:ro\"
  46. "
  47. fi
  48. init-config-add "
  49. $SERVICE_NAME:
  50. command:
  51. - \"--workers=${workers}\"
  52. - \"-i ${modules}\"
  53. "