2026-06-10 21:14:47 -03:00

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}"
}