enhanced .env variable usage

This commit is contained in:
Yhael S
2023-10-01 00:55:06 -05:00
parent 55270202ab
commit d0ec5118eb
6 changed files with 67 additions and 749 deletions

View File

@@ -73,8 +73,7 @@ RUN if [ -n "$GITHUB_USER" ] && [ -n "$GITHUB_ACCESS_TOKEN" ]; then \
# Odoo Extra Addons #
#-------------------------#
RUN mkdir -p ${THIRD_PARTY_ADDONS} && \
chown odoo:odoo -R ${THIRD_PARTY_ADDONS}
RUN mkdir -p ${THIRD_PARTY_ADDONS} && chown odoo:odoo -R ${THIRD_PARTY_ADDONS}
COPY --chown=odoo:odoo ./odoo/fix-manifest.py /
COPY --chown=odoo:odoo ./odoo/third-party-addons.sh /
@@ -93,6 +92,7 @@ RUN touch ${LOG_PATH} && chown odoo:odoo ${LOG_PATH}
# Copy environment variables & script to generate odoo.conf
COPY --chown=odoo:odoo ./.env /
COPY --chown=odoo:odoo ./odoo/odoo.conf /
COPY --chown=odoo:odoo ./odoo/odoorc.sh /
# Generate odoo.conf

View File

@@ -2,6 +2,18 @@
set -e
while IFS='=' read -r key value || [[ -n $key ]]; do
# Skip comments and empty lines
[[ $key =~ ^#.* ]] || [[ -z $key ]] && continue
# Removing any quotes around the value
value=${value%\"}
value=${value#\"}
# Declare variable
eval "$key=\"$value\""
done < .env
case "$1" in
-- | odoo)
shift
@@ -9,7 +21,7 @@ case "$1" in
# Creates new module.
exec odoo "$@"
else
wait-for-psql.py --db_host ${DB_HOST} --db_port ${DB_PORT} --db_user ${DB_USER} --db_password ${DB_PASSWORD} --timeout=30
wait-for-psql.py --db_host ${HOST} --db_port ${PORT} --db_user ${USER} --db_password ${PASSWORD} --timeout=30
if [ ${APP_ENV} = 'fresh' ] || [ ${APP_ENV} = 'restore' ]; then
# Ideal for a fresh install or restore a production database.
@@ -18,13 +30,6 @@ case "$1" in
exec odoo --config ${ODOO_RC} --database= --init= --update= --load-language= --workers=0 --limit-time-cpu=3600 --limit-time-real=7200
fi
if [ ${APP_ENV} = 'full' ] ; then
# Ideal for initializing a fresh database with a huge amount of addons.
echo odoo --config ${ODOO_RC} --database=${DB_NAME} --init=${INIT} --update= --load=${SERVER_WIDE_MODULES} --log-level=${LOG_LEVEL} --load-language=${LOAD_LANGUAGE} --max-cron-threads=${MAX_CRON_THREADS} --limit-time-cpu=3600 --limit-time-real=7200
exec odoo --config ${ODOO_RC} --update= --workers=0 --limit-time-cpu=3600 --limit-time-real=7200
fi
if [ ${APP_ENV} = 'local' ] ; then
# Listens to all .env variables mapped into odoo.conf file.
echo odoo --config ${ODOO_RC}
@@ -41,16 +46,16 @@ case "$1" in
if [ ${APP_ENV} = 'testing' ] ; then
# Initializies a fresh 'test_*' database, installs the addons to test, and runs tests you specify in the test tags.
echo odoo --config ${ODOO_RC} --database=test_${DB_NAME} --test-enable --test-tags ${TEST_TAGS} --init=${ADDONS_TO_TEST} --update=${ADDONS_TO_TEST} --load=${SERVER_WIDE_MODULES} --log-level=${LOG_LEVEL} --without-demo= --workers=0 --stop-after-init
echo odoo --config ${ODOO_RC} --database=test_${DB_NAME} --test-enable --test-tags ${TEST_TAGS} --init=${ADDONS_TO_TEST} --update=${ADDONS_TO_TEST} --load=${SERVER_WIDE_MODULES} --log-level=${LOG_LEVEL} --without-demo= --workers=0 --dev= --stop-after-init
exec odoo --config ${ODOO_RC} --database=test_${DB_NAME} --test-enable --test-tags ${TEST_TAGS} --init=${ADDONS_TO_TEST} --update=${ADDONS_TO_TEST} --without-demo= --workers=0 --stop-after-init
exec odoo --config ${ODOO_RC} --database=test_${DB_NAME} --test-enable --test-tags ${TEST_TAGS} --init=${ADDONS_TO_TEST} --update=${ADDONS_TO_TEST} --without-demo= --workers=0 --dev= --stop-after-init
fi
if [ ${APP_ENV} = 'staging' ] ; then
# Automagically upgrade all addons and install new ones. Ideal for deployment process.
echo odoo --config ${ODOO_RC} --database=${DB_NAME} --init=${INIT} --update=all --load=${SERVER_WIDE_MODULES} --log-level=${LOG_LEVEL} --load-language=${LOAD_LANGUAGE} --limit-time-cpu=3600 --limit-time-real=7200
echo odoo --config ${ODOO_RC} --database=${DB_NAME} --init=${INIT} --update=all --load=${SERVER_WIDE_MODULES} --log-level=${LOG_LEVEL} --load-language=${LOAD_LANGUAGE} --limit-time-cpu=3600 --limit-time-real=7200 --dev=
exec odoo --config ${ODOO_RC} --update=all --without-demo=all --workers=0 --limit-time-cpu=3600 --limit-time-real=7200
exec odoo --config ${ODOO_RC} --update=all --without-demo=all --workers=0 --limit-time-cpu=3600 --limit-time-real=7200 --dev=
fi
if [ ${APP_ENV} = 'production' ] ; then
@@ -63,7 +68,7 @@ case "$1" in
;;
-*)
wait-for-psql.py --db_host ${DB_HOST} --db_port ${DB_PORT} --db_user ${DB_USER} --db_password ${DB_PASSWORD} --timeout=30
wait-for-psql.py --db_host ${HOST} --db_port ${PORT} --db_user ${USER} --db_password ${PASSWORD} --timeout=30
echo odoo --config ${ODOO_RC}
exec odoo --config ${ODOO_RC}
;;

View File

@@ -1,291 +0,0 @@
options]
;------------------------------------------;
; Options not exposed on the command line. ;
;------------------------------------------;
admin_passwd = {ADMIN_PASSWD}
csv_internal_sep = {CSV_INTERNAL_SEP}
publisher_warranty_url = {PUBLISHER_WARRANTY_URL}
root_path = {ROOT_PATH}
reportgz = {REPORTGZ}
websocket_keep_alive_timeout = {WEBSOCKET_KEEP_ALIVE_TIMEOUT}
websocket_rate_limit_burst = {WEBSOCKET_RATE_LIMIT_BURST}
websocket_rate_limit_delay = {WEBSOCKET_RATE_LIMIT_DELAY}
;-----------------------;
; Server startup config ;
;-----------------------;
; --config | -c
config = {ODOO_RC}
; --save
save = {SAVE}
; --init | -i
init = {INIT}
; --update | -u
update = {UPDATE}
; --without-demo
demo = {DEMO}
without_demo = {WITHOUT_DEMO}
; --import-partial
import_partial = {IMPORT_PARTIAL}
; --pidfile
pidfile = {PIDFILE}
; --addons-path
addons_path = {ADDONS_PATH}
; --upgrade-path
upgrade_path = {UPGRADE_PATH}
; --load
server_wide_modules = {SERVER_WIDE_MODULES}
; --data-dir
data_dir = {DATA_DIR}
;------;
; HTTP ;
;------;
; --http-interface | --xmlrpc-interface
http_interface = {HTTP_INTERFACE}
; --http-port | -p | --xmlrpc-port
http_port = {HTTP_PORT}
; --xmlrpcs-interface
xmlrpcs_interface = {XMLRPCS_INTERFACE}
; --xmlrpcs-port
xmlrpcs_port = {XMLRPCS_PORT}
; --gevent-port | --longpolling_port (deprecated)
gevent_port = {GEVENT_PORT}
; --no-http | --no-xmlrpc
http_enable = {HTTP_ENABLE}
; --no-xmlrpcs
xmlrpcs = {XMLRPCS}
; --proxy-mode
proxy_mode = {PROXY_MODE}
; --x-sendfile
x_sendfile = {X_SENDFILE}
;---------------;
; Testing Group ;
;---------------;
; --test-file
test_file = {TEST_FILE}
; --test-enable
test_enable = {TEST_ENABLE}
; --test-tags
test_tags = {TEST_FILE}
; --screencasts
screencasts = {SCREENCASTS}
; --screenshots
screenshots = {SCREENSHOTS}
;---------------;
; Logging Group ;
;---------------;
; --logfile
logfile = {LOGFILE}
; --syslog
syslog = {SYSLOG}
; --log-handler | --log-web (--log-handler=odoo.http:DEBUG) | --log-sql (--log-handler=odoo.sql_db:DEBUG)
log_handler = {LOG_HANDLER}
; --log-db
log_db = {LOG_DB}
; --log-db-level
log_db_level = {LOG_DB_LEVEL}
; --log-level
log_level = {LOG_LEVEL}
;------------;
; SMTP Group ;
;------------;
; --email-from
email_from = {EMAIL_FROM}
; --from-filter
from_filter = {FROM_FILTER}
; --smtp
smtp_server = {SMTP_SERVER}
; --smtp-port
smtp_port = {SMTP_PORT}
; --smtp-ssl
smtp_ssl = {SMTP_SSL}
; --smtp-user
smtp_user = {SMTP_USER}
; --smtp-password
smtp_password = {SMTP_PASSWORD}
; --smtp-ssl-certificate-filename
smtp_ssl_certificate_filename = {SMTP_SSL_CERTIFICATE_FILENAME}
; --smtp-ssl-private-key-filename
smtp_ssl_private_key_filename = {SMTP_SSL_PRIVATE_KEY_FILENAME}
;----------;
; DB Group ;
;----------;
; --database | -d
db_name = {DB_NAME}
; --db_user | -r
db_user = {DB_USER}
; --db_password | -w
db_password = {DB_PASSWORD}
; --pg_path
pg_path = {PG_PATH}
; --db_host
db_host = {DB_HOST}
; --db_port
db_port = {DB_PORT}
; --db_sslmode
db_sslmode = {DB_SSLMODE}
; --db_maxconn
db_maxconn = {DB_MAXCONN}
; --db-template
db_template = {DB_TEMPLATE}
;------------------------------;
; Internationalisation options ;
;------------------------------;
; --load-language
load_language = {LOAD_LANGUAGE}
; --language
language = {LANGUAGE}
; --i18n-export
translate_out = {TRANSLATE_OUT}
; --i18n-import
translate_in = {TRANSLATE_IN}
; --i18n-overwrite
overwrite_existing_translations = {OVERWRITE_EXISTING_TRANSLATIONS}
; --modules
translate_modules = {TRANSLATE_MODULES}
;----------;
; Security ;
;----------;
; --no-database-list
list_db = {LIST_DB}
;-----;
; WEB ;
;-----;
; --db-filter
dbfilter = {DBFILTER}
;------------------;
; Advanced options ;
;------------------;
; --dev (all, reload, xml, qweb, werkzeug, sql, shell, assets, tests)
dev_mode = {DEV_MODE}
; --shell-interface
shell_interface = {SHELL_INTERFACE}
; --stop-after-init
stop_after_init = {STOP_AFTER_INIT}
; --osv-memory-count-limit
osv_memory_count_limit = {OSV_MEMORY_COUNT_LIMIT}
; --transient-age-limit | --osv-memory-age-limit (deprecated)
transient_age_limit = {TRANSIENT_AGE_LIMIT}
; --max-cron-threads
max_cron_threads = {MAX_CRON_THREADS}
; --unaccent
unaccent = {UNACCENT}
; --geoip-db
geoip_database = {GEOIP_DATABASE}
; --workers
workers = {WORKERS}
; --limit-memory-soft
limit_memory_soft = {LIMIT_MEMORY_SOFT}
; --limit-memory-hard
limit_memory_hard = {LIMIT_MEMORY_HARD}
; --limit-time-cpu
limit_time_cpu = {LIMIT_TIME_CPU}
; --limit-time-real
limit_time_real = {LIMIT_TIME_REAL}
; --limit-time-real-cron
limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
; --limit-request
limit_request = {LIMIT_REQUEST}
;-----------------------------;
; External Integrations ;
;-----------------------------;
;-------------;
; Redis ;
;-------------;
; -- Possible values: 1 or true
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
; -- Defaults to is localhost
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
; -- Defaults to 6379
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
; -- Sets the password for the AUTH command (optional)
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
; -- Alternative way to define the Redis server address like rediss:// protocol.
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
; -- Prefix for the session keys (optional)
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
; -- Time in seconds before expiration of the sessions (default is 7 days)
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
; -- Time in seconds before expiration of the anonymous sessions (default is 3 hours)
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}

View File

@@ -2,444 +2,39 @@
set -e
# Define default values for environment variables
set -a
source /.env
set +a
declare -A defaults
defaults=(
[ADMIN_PASSWD]=${ADMIN_PASSWD}
[CSV_INTERNAL_SEP]=${CSV_INTERNAL_SEP}
[PUBLISHER_WARRANTY_URL]=${PUBLISHER_WARRANTY_URL}
[ROOT_PATH]=${ROOT_PATH}
[REPORTGZ]=${REPORTGZ}
[WEBSOCKET_KEEP_ALIVE_TIMEOUT]=${WEBSOCKET_KEEP_ALIVE_TIMEOUT}
[WEBSOCKET_RATE_LIMIT_BURST]=${WEBSOCKET_RATE_LIMIT_BURST}
[WEBSOCKET_RATE_LIMIT_DELAY]=${WEBSOCKET_RATE_LIMIT_DELAY}
[ODOO_RC]=${ODOO_RC}
[SAVE]=${SAVE}
[INIT]=${INIT}
[UPDATE]=${UPDATE}
[DEMO]=${DEMO}
[WITHOUT_DEMO]=${WITHOUT_DEMO}
[IMPORT_PARTIAL]=${IMPORT_PARTIAL}
[PIDFILE]=${PIDFILE}
[ADDONS_PATH]=${ADDONS_PATH}
[UPGRADE_PATH]=${UPGRADE_PATH}
[SERVER_WIDE_MODULES]=${SERVER_WIDE_MODULES}
[DATA_DIR]=${DATA_DIR}
[HTTP_INTERFACE]=${HTTP_INTERFACE}
[HTTP_PORT]=${HTTP_PORT}
[XMLRPCS_INTERFACE]=${XMLRPCS_INTERFACE}
[XMLRPCS_PORT]=${XMLRPCS_PORT}
[GEVENT_PORT]=${GEVENT_PORT}
[HTTP_ENABLE]=${HTTP_ENABLE}
[XMLRPCS]=${XMLRPCS}
[PROXY_MODE]=${PROXY_MODE}
[X_SENDFILE]=${X_SENDFILE}
[DBFILTER]=${DBFILTER}
[TEST_FILE]=${TEST_FILE}
[TEST_ENABLE]=${TEST_ENABLE}
[TEST_TAGS]=${TEST_TAGS}
[SCREENCASTS]=${SCREENCASTS}
[SCREENSHOTS]=${SCREENSHOTS}
[LOGFILE]=${LOGFILE}
[SYSLOG]=${SYSLOG}
[LOG_HANDLER]=${LOG_HANDLER}
[LOG_DB]=${LOG_DB}
[LOG_DB_LEVEL]=${LOG_DB_LEVEL}
[LOG_LEVEL]=${LOG_LEVEL}
[EMAIL_FROM]=${EMAIL_FROM}
[FROM_FILTER]=${FROM_FILTER}
[SMTP_SERVER]=${SMTP_SERVER}
[SMTP_PORT]=${SMTP_PORT}
[SMTP_SSL]=${SMTP_SSL}
[SMTP_USER]=${SMTP_USER}
[SMTP_PASSWORD]=${SMTP_PASSWORD}
[SMTP_SSL_CERTIFICATE_FILENAME]=${SMTP_SSL_CERTIFICATE_FILENAME}
[SMTP_SSL_PRIVATE_KEY_FILENAME]=${SMTP_SSL_PRIVATE_KEY_FILENAME}
[DB_NAME]=${DB_NAME}
[DB_USER]=${DB_USER}
[DB_PASSWORD]=${DB_PASSWORD}
[PG_PATH]=${PG_PATH}
[DB_HOST]=${DB_HOST}
[DB_PORT]=${DB_PORT}
[DB_SSLMODE]=${DB_SSLMODE}
[DB_MAXCONN]=${DB_MAXCONN}
[DB_TEMPLATE]=${DB_TEMPLATE}
[LOAD_LANGUAGE]=${LOAD_LANGUAGE}
[LANGUAGE]=${LANGUAGE}
[TRANSLATE_OUT]=${TRANSLATE_OUT}
[TRANSLATE_IN]=${TRANSLATE_IN}
[OVERWRITE_EXISTING_TRANSLATIONS]=${OVERWRITE_EXISTING_TRANSLATIONS}
[TRANSLATE_MODULES]=${TRANSLATE_MODULES}
[LIST_DB]=${LIST_DB}
[DEV_MODE]=${DEV_MODE}
[SHELL_INTERFACE]=${SHELL_INTERFACE}
[STOP_AFTER_INIT]=${STOP_AFTER_INIT}
[OSV_MEMORY_COUNT_LIMIT]=${OSV_MEMORY_COUNT_LIMIT}
[TRANSIENT_AGE_LIMIT]=${TRANSIENT_AGE_LIMIT}
[MAX_CRON_THREADS]=${MAX_CRON_THREADS}
[UNACCENT]=${UNACCENT}
[GEOIP_DATABASE]=${GEOIP_DATABASE}
[WORKERS]=${WORKERS}
[LIMIT_MEMORY_SOFT]=${LIMIT_MEMORY_SOFT}
[LIMIT_MEMORY_HARD]=${LIMIT_MEMORY_HARD}
[LIMIT_TIME_CPU]=${LIMIT_TIME_CPU}
[LIMIT_TIME_REAL]=${LIMIT_TIME_REAL}
[LIMIT_TIME_REAL_CRON]=${LIMIT_TIME_REAL_CRON}
[LIMIT_REQUEST]=${LIMIT_REQUEST}
[ODOO_SESSION_REDIS]=${ODOO_SESSION_REDIS}
[ODOO_SESSION_REDIS_HOST]=${ODOO_SESSION_REDIS_HOST}
[ODOO_SESSION_REDIS_PORT]=${ODOO_SESSION_REDIS_PORT}
[ODOO_SESSION_REDIS_PASSWORD]=${ODOO_SESSION_REDIS_PASSWORD}
[ODOO_SESSION_REDIS_URL]=${ODOO_SESSION_REDIS_URL}
[ODOO_SESSION_REDIS_PREFIX]=${ODOO_SESSION_REDIS_PREFIX}
[ODOO_SESSION_REDIS_EXPIRATION]=${ODOO_SESSION_REDIS_EXPIRATION}
[ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS]=${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
[DISABLE_ATTACHMENT_STORAGE]=${DISABLE_ATTACHMENT_STORAGE}
[AWS_HOST]=${AWS_HOST}
[AWS_REGION]=${AWS_REGION}
[AWS_ACCESS_KEY_ID]=${AWS_ACCESS_KEY_ID}
[AWS_SECRET_ACCESS_KEY]=${AWS_SECRET_ACCESS_KEY}
[AWS_BUCKETNAME]=${AWS_BUCKETNAME}
)
# Define the template
template=$(cat << EOF
[options]
;------------------------------------------;
; Options not exposed on the command line. ;
;------------------------------------------;
admin_passwd = {ADMIN_PASSWD}
csv_internal_sep = {CSV_INTERNAL_SEP}
publisher_warranty_url = {PUBLISHER_WARRANTY_URL}
root_path = {ROOT_PATH}
reportgz = {REPORTGZ}
websocket_keep_alive_timeout = {WEBSOCKET_KEEP_ALIVE_TIMEOUT}
websocket_rate_limit_burst = {WEBSOCKET_RATE_LIMIT_BURST}
websocket_rate_limit_delay = {WEBSOCKET_RATE_LIMIT_DELAY}
;-----------------------;
; Server startup config ;
;-----------------------;
; --config | -c
config = {ODOO_RC}
; --save
save = {SAVE}
; --init | -i
init = {INIT}
; --update | -u
update = {UPDATE}
; --without-demo
demo = {DEMO}
without_demo = {WITHOUT_DEMO}
; --import-partial
import_partial = {IMPORT_PARTIAL}
; --pidfile
pidfile = {PIDFILE}
; --addons-path
addons_path = {ADDONS_PATH}
; --upgrade-path
upgrade_path = {UPGRADE_PATH}
; --load
server_wide_modules = {SERVER_WIDE_MODULES}
; --data-dir
data_dir = {DATA_DIR}
;------;
; HTTP ;
;------;
; --http-interface | --xmlrpc-interface
http_interface = {HTTP_INTERFACE}
; --http-port | -p | --xmlrpc-port
http_port = {HTTP_PORT}
; --xmlrpcs-interface
xmlrpcs_interface = {XMLRPCS_INTERFACE}
; --xmlrpcs-port
xmlrpcs_port = {XMLRPCS_PORT}
; --gevent-port | --longpolling_port (deprecated)
gevent_port = {GEVENT_PORT}
; --no-http | --no-xmlrpc
http_enable = {HTTP_ENABLE}
; --no-xmlrpcs
xmlrpcs = {XMLRPCS}
; --proxy-mode
proxy_mode = {PROXY_MODE}
; --x-sendfile
x_sendfile = {X_SENDFILE}
;---------------;
; Testing Group ;
;---------------;
; --test-file
test_file = {TEST_FILE}
; --test-enable
test_enable = {TEST_ENABLE}
; --test-tags
test_tags = {TEST_FILE}
; --screencasts
screencasts = {SCREENCASTS}
; --screenshots
screenshots = {SCREENSHOTS}
;---------------;
; Logging Group ;
;---------------;
; --logfile
logfile = {LOGFILE}
; --syslog
syslog = {SYSLOG}
; --log-handler | --log-web (--log-handler=odoo.http:DEBUG) | --log-sql (--log-handler=odoo.sql_db:DEBUG)
log_handler = {LOG_HANDLER}
; --log-db
log_db = {LOG_DB}
; --log-db-level
log_db_level = {LOG_DB_LEVEL}
; --log-level
log_level = {LOG_LEVEL}
;------------;
; SMTP Group ;
;------------;
; --email-from
email_from = {EMAIL_FROM}
; --from-filter
from_filter = {FROM_FILTER}
; --smtp
smtp_server = {SMTP_SERVER}
; --smtp-port
smtp_port = {SMTP_PORT}
; --smtp-ssl
smtp_ssl = {SMTP_SSL}
; --smtp-user
smtp_user = {SMTP_USER}
; --smtp-password
smtp_password = {SMTP_PASSWORD}
; --smtp-ssl-certificate-filename
smtp_ssl_certificate_filename = {SMTP_SSL_CERTIFICATE_FILENAME}
; --smtp-ssl-private-key-filename
smtp_ssl_private_key_filename = {SMTP_SSL_PRIVATE_KEY_FILENAME}
;----------;
; DB Group ;
;----------;
; --database | -d
db_name = {DB_NAME}
; --db_user | -r
db_user = {DB_USER}
; --db_password | -w
db_password = {DB_PASSWORD}
; --pg_path
pg_path = {PG_PATH}
; --db_host
db_host = {DB_HOST}
; --db_port
db_port = {DB_PORT}
; --db_sslmode
db_sslmode = {DB_SSLMODE}
; --db_maxconn
db_maxconn = {DB_MAXCONN}
; --db-template
db_template = {DB_TEMPLATE}
;------------------------------;
; Internationalisation options ;
;------------------------------;
; --load-language
load_language = {LOAD_LANGUAGE}
; --language
language = {LANGUAGE}
; --i18n-export
translate_out = {TRANSLATE_OUT}
; --i18n-import
translate_in = {TRANSLATE_IN}
; --i18n-overwrite
overwrite_existing_translations = {OVERWRITE_EXISTING_TRANSLATIONS}
; --modules
translate_modules = {TRANSLATE_MODULES}
;----------;
; Security ;
;----------;
; --no-database-list
list_db = {LIST_DB}
;-----;
; WEB ;
;-----;
; --db-filter
dbfilter = {DBFILTER}
;------------------;
; Advanced options ;
;------------------;
; --dev (all, reload, xml, qweb, werkzeug, sql, shell, assets, tests)
dev_mode = {DEV_MODE}
; --shell-interface
shell_interface = {SHELL_INTERFACE}
; --stop-after-init
stop_after_init = {STOP_AFTER_INIT}
; --osv-memory-count-limit
osv_memory_count_limit = {OSV_MEMORY_COUNT_LIMIT}
; --transient-age-limit | --osv-memory-age-limit (deprecated)
transient_age_limit = {TRANSIENT_AGE_LIMIT}
; --max-cron-threads
max_cron_threads = {MAX_CRON_THREADS}
; --unaccent
unaccent = {UNACCENT}
; --geoip-db
geoip_database = {GEOIP_DATABASE}
; --workers
workers = {WORKERS}
; --limit-memory-soft
limit_memory_soft = {LIMIT_MEMORY_SOFT}
; --limit-memory-hard
limit_memory_hard = {LIMIT_MEMORY_HARD}
; --limit-time-cpu
limit_time_cpu = {LIMIT_TIME_CPU}
; --limit-time-real
limit_time_real = {LIMIT_TIME_REAL}
; --limit-time-real-cron
limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
; --limit-request
limit_request = {LIMIT_REQUEST}
;-----------------------------;
; External Integrations ;
;-----------------------------;
;-------------;
; Redis ;
;-------------;
; -- Possible values: 1 or true
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
; -- Defaults to is localhost
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
; -- Defaults to 6379
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
; -- Sets the password for the AUTH command (optional)
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
; -- Alternative way to define the Redis server address like rediss:// protocol.
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
; -- Prefix for the session keys (optional)
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
; -- Time in seconds before expiration of the sessions (default is 7 days)
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
; -- Time in seconds before expiration of the anonymous sessions (default is 3 hours)
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
;----------;
; S3 ;
;----------;
; -- Disable S3 storage
DISABLE_ATTACHMENT_STORAGE = {DISABLE_ATTACHMENT_STORAGE}
; -- Not required if using AWS S3
AWS_HOST = {AWS_HOST}
; -- Required if using AWS services
AWS_REGION = {AWS_REGION}
AWS_ACCESS_KEY_ID = {AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY = {AWS_SECRET_ACCESS_KEY}
; Optional {db_name} placeholder
AWS_BUCKETNAME = {AWS_BUCKETNAME}
EOF
)
# Override defaults with values from environment variables
for key in "${!defaults[@]}"; do
if [[ ! ${defaults[$key]} =~ ^\{.*\}$ ]]; then
value=${!key:-${defaults[$key]}}
template="${template//\{$key\}/$value}"
fi
done
# Store the result to the odoo.conf file
echo "$template" > ${ODOO_RC}
# Define the path to the example configuration file
TEMPLATE_CONF="odoo.conf"
# Copy the example conf to the destination to start replacing the variables
cp "$TEMPLATE_CONF" "$ODOO_RC"
# First pass: Evaluate any nested variables within .env file and export them
while IFS='=' read -r key value || [[ -n $key ]]; do
# Skip comments and empty lines
[[ $key =~ ^#.* ]] || [[ -z $key ]] && continue
# Removing any quotes around the value
value=${value%\"}
value=${value#\"}
# Evaluate any variables within value
eval "value=\"$value\""
export "$key=$value"
done < .env
# Second pass: Replace the variables in $ODOO_RC
while IFS='=' read -r key value || [[ -n $key ]]; do
# Skip comments and empty lines
[[ $key =~ ^#.* ]] || [[ -z $key ]] && continue
value=${!key} # Get the value of the variable whose name is $key
# Escape characters which are special to sed
value_escaped=$(echo "$value" | sed 's/[\/&]/\\&/g')
# Replace occurrences of the key with the value in $ODOO_RC
sed -i "s/\${$key}/${value_escaped}/g" "$ODOO_RC"
done < .env
echo "Configuration file is generated at $ODOO_RC"

View File

@@ -1,3 +1,7 @@
#!/bin/bash
set -e
# Check if the repository directory exists
if [ ! -d "odoo-cloud-platform" ]; then
git clone https://github.com/camptocamp/odoo-cloud-platform.git --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags;