mirror of
https://github.com/logos-storage/logos-storage-modules-e2e.git
synced 2026-06-13 19:09:27 +00:00
46 lines
1.4 KiB
Bash
46 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SOURCE_DIR}/common.sh"
|
|
|
|
gh_latest_release() {
|
|
local repo_slug="$1"
|
|
local api_url="https://api.github.com/repos/${repo_slug}"
|
|
local latest_release
|
|
latest_release=$(curl -fsSL "${api_url}/releases/latest" | jq -r '.tag_name')
|
|
|
|
if [[ -z "${latest_release}" || "${latest_release}" == "null" ]]; then
|
|
echoerr "Error: could not determine latest release for ${repo_slug}" >&2
|
|
return 1
|
|
fi
|
|
echoerr "Latest release of ${repo_slug}: ${latest_release}"
|
|
echo "${latest_release}"
|
|
}
|
|
|
|
gh_clone() {
|
|
local repo_slug="$1"
|
|
local branch_or_tag="$2"
|
|
local repo_name="${repo_slug##*/}"
|
|
local api_url="https://api.github.com/repos/${repo_slug}"
|
|
local dest="${LOGOS_BASE}/${repo_name}"
|
|
|
|
if [[ -z "${branch_or_tag}" || "${branch_or_tag}" == "latest" ]]; then
|
|
branch_or_tag=$(gh_latest_release "${repo_slug}") || return 1
|
|
fi
|
|
|
|
echoerr "Cloning ${repo_slug}: ${branch_or_tag}"
|
|
|
|
if [[ -d "${dest}" ]]; then
|
|
echoerr "Removing existing ${dest}"
|
|
rm -rf "${dest}"
|
|
fi
|
|
|
|
mkdir -p "$(dirname "${dest}")"
|
|
git clone --depth 1 --branch "${branch_or_tag}" \
|
|
"https://github.com/${repo_slug}.git" "${dest}"
|
|
|
|
echoerr "Cloned ${repo_slug}@${branch_or_tag} into ${dest}"
|
|
echo "${dest}"
|
|
}
|