#!/bin/sh set -e ODOO_ROOT_DIR=${ODOO_ROOT_DIR:-'/opt/odoo'} SAVE_COMMITS_DIR=${SAVE_COMMITS_DIR:-'/opt/odoo_commits'} SAVE_COMMITS_FILENAME=${SAVE_COMMITS_FILENAME:-'custom_addons'} TMP_REPO_PATH=${TEMP_REPO_PATH:-'/tmp/repo'} save_commit() { repo="$1" commit="$2" module="$3" dst="$4" echo "${repo};${commit};${module};${dst}" >> "${SAVE_COMMITS_DIR}/${SAVE_COMMITS_FILENAME}" } repo="$1" shift ref="$1" shift dst="$1" shift modules="$@" set +e git clone --branch "${ref}" --filter=tree:0 "${repo}" "${TMP_REPO_PATH}" if [ "$?" -ne 0 ]; then git clone --filter=tree:0 "${repo}" "${TMP_REPO_PATH}" if [ "$?" -ne 0 ]; then git clone --single-branch --branch "${ref}" --depth 1 "${repo}" "${TMP_REPO_PATH}" if [ "$?" -ne 0 ]; then git clone "${repo}" "${TMP_REPO_PATH}" fi fi fi set -e git -C "${TMP_REPO_PATH}" checkout "${ref}" commit="$(git -C ${TMP_REPO_PATH} rev-parse HEAD)" if [ -n "$modules" ]; then for module in $modules; do if [ -d "${ODOO_ROOT_DIR}/${dst}/${module}" ]; then rm -r "${ODOO_ROOT_DIR}/${dst}/${module}" fi mv "${TMP_REPO_PATH}/${module}" "${ODOO_ROOT_DIR}/${dst}/" save_commit "$repo" "$commit" "$module" "$dst" done else module="$(basename $dst)" if [ -d "${ODOO_ROOT_DIR}/${dst}" ]; then rm -r "${ODOO_ROOT_DIR}/${dst}" fi mkdir -p "/${ODOO_ROOT_DIR}/${dst}" mv ${TMP_REPO_PATH}/* "${ODOO_ROOT_DIR}/${dst}/" save_commit "$repo" "$commit" "$module" "$dst" fi rm -r "${TMP_REPO_PATH}"