Skip to content

Commit 6a2f162

Browse files
authored
fix(miniforge): exclude pre-releases from latest (#275)
1 parent 911a59c commit 6a2f162

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

src/miniforge/devcontainer-feature.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "Conda, Mamba (Miniforge)",
33
"id": "miniforge",
4-
"version": "2.0.1",
4+
"version": "2.0.2",
55
"description": "Installs Conda and Mamba package manager and Python3. conda-forge set as the default (and only) channel.",
66
"documentationURL": "https://github.com/rocker-org/devcontainer-features/tree/main/src/miniforge",
77
"options": {

src/miniforge/install.sh

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ elif [ "${USERNAME}" = "none" ] || ! id -u "${USERNAME}" >/dev/null 2>&1; then
5151
fi
5252

5353
apt_get_update() {
54-
if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
54+
if [ ! -d /var/lib/apt/lists ] || [ -z "$(ls -A /var/lib/apt/lists 2>/dev/null)" ]; then
5555
echo "Running apt-get update..."
5656
apt-get update -y
5757
fi
@@ -87,12 +87,26 @@ find_version_from_git_tags() {
8787
check_packages ca-certificates
8888
version_list="$(git ls-remote --tags "${repository}" | grep -oP "${regex}" | tr -d ' ' | tr "${separator}" "." | sort -rV)"
8989
if [ "${requested_version}" = "latest" ] || [ "${requested_version}" = "current" ] || [ "${requested_version}" = "lts" ]; then
90-
declare -g "${variable_name}"="$(echo "${version_list}" | head -n 1)"
91-
else
92-
set +e
93-
declare -g "${variable_name}"="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
94-
set -e
90+
requested_version=""
91+
if [ "${repository}" = "https://github.com/conda-forge/miniforge" ]; then
92+
check_packages curl
93+
github_api_headers=()
94+
if [ -n "${GITHUB_TOKEN:-}" ]; then
95+
# use GITHUB_TOKEN to raise rate limits
96+
github_api_headers=(-H "Authorization: Bearer ${GITHUB_TOKEN}" -H "X-GitHub-Api-Version: 2022-11-28")
97+
fi
98+
set +e
99+
requested_version="$(curl -fsSL "${github_api_headers[@]}" "https://api.github.com/repos/conda-forge/miniforge/releases/latest" | sed -nE 's/^[[:space:]]*"tag_name":[[:space:]]*"([^"]+)".*/\1/p')"
100+
set -e
101+
fi
102+
# fallback to most recent git tag if rate limit exceeded; this may unfortunately include pre-releases
103+
if [ -z "${requested_version}" ]; then
104+
requested_version="$(echo "${version_list}" | head -n 1)"
105+
fi
95106
fi
107+
set +e
108+
declare -g "${variable_name}"="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
109+
set -e
96110
fi
97111
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" >/dev/null 2>&1; then
98112
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2

0 commit comments

Comments
 (0)