#!/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='/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 --single-branch --branch "${ref}" --depth 1 "${repo}" "${TMP_REPO_PATH}" if [ "$?" != 0 ]; then git clone "${repo}" "${TMP_REPO_PATH}" fi set -e git -C "${TMP_REPO_PATH}" checkout "${ref}" commit="$(git -C /tmp/repo rev-parse HEAD)" if [ -n "$modules" ]; then for module in $modules; do mv "${TMP_REPO_PATH}/${module}" "${ODOO_ROOT_DIR}/${dst}/" save_commit "$repo" "$commit" "$module" "$dst" done else module="$(basename $dst)" 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}"