#!/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}" }