Skip to content
Snippets Groups Projects
get_addons 1.46 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/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