gemini-cli-bin: 0.6.0 -> 0.6.1 (#446606)

Aleksana 2eb62f40 b2a02c12

Changed files
+22 -54
pkgs
by-name
ge
gemini-cli-bin
+22 -13
pkgs/by-name/ge/gemini-cli-bin/package.nix
···
stdenvNoCC,
fetchurl,
nodejs,
-
gitUpdater,
+
writableTmpDirAsHomeHook,
+
nix-update-script,
}:
-
let
-
owner = "google-gemini";
-
repo = "gemini-cli";
-
asset = "gemini.js";
-
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "gemini-cli-bin";
-
version = "0.6.0";
+
version = "0.6.1";
src = fetchurl {
-
url = "https://github.com/${owner}/${repo}/releases/download/v${finalAttrs.version}/${asset}";
-
hash = "sha256-jmZvL4Rst3238H2BdZ/bQuddFkFcFLRABJ1wTHm8qPM=";
+
url = "https://github.com/google-gemini/gemini-cli/releases/download/v${finalAttrs.version}/gemini.js";
+
hash = "sha256-gTd+uw5geR7W87BOiE6YmDDJ4AiFlYxbuLE2GWgg0kw=";
};
phases = [
"installPhase"
"fixupPhase"
+
"installCheckPhase"
];
strictDeps = true;
···
runHook postInstall
'';
-
passthru.updateScript = [
-
./update-asset.sh
-
"${owner}/${repo}"
-
"${asset}"
+
doInstallCheck = true;
+
nativeInstallCheckInputs = [
+
writableTmpDirAsHomeHook
];
+
# versionCheckHook cannot be used because the reported version might be incorrect (e.g., 0.6.1 returns 0.6.0).
+
installCheckPhase = ''
+
runHook preInstallCheck
+
+
"$out/bin/gemini" -v
+
+
runHook postInstallCheck
+
'';
+
+
passthru.updateScript = nix-update-script {
+
# Ignore `preview` and `nightly` tags
+
extraArgs = [ "--version-regex=^v([0-9.]+)$" ];
+
};
meta = {
description = "AI agent that brings the power of Gemini directly into your terminal";
-41
pkgs/by-name/ge/gemini-cli-bin/update-asset.sh
···
-
#!/usr/bin/env nix-shell
-
#!nix-shell -i bash -p gnugrep curl jq gnused
-
-
set -euo pipefail
-
-
cd "$(dirname "${BASH_SOURCE[0]}")"
-
-
NIX_FILE="package.nix"
-
-
GITHUB_REPO="$1"
-
ASSET_NAME="$2"
-
REV_PREFIX="${3:-v}"
-
-
CURRENT_VER="$(grep -oP 'version = "\K[^"]+' "${NIX_FILE}")"
-
CURRENT_HASH="$(grep -oP 'hash = "\K[^"]+' "${NIX_FILE}")"
-
-
JQ_FILTER='[.[] | select((.tag_name | test("preview|nightly")) | not)] |
-
first | .tag_name, (.assets[] | select(.name == $asset_name) | .digest)'
-
-
{
-
read -r LATEST_VER
-
read -r ASSET_DIGEST
-
} < <(
-
curl --fail -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} \
-
"https://api.github.com/repos/${GITHUB_REPO}/releases" |
-
jq -r --arg asset_name "${ASSET_NAME}" "${JQ_FILTER}"
-
)
-
-
LATEST_VER="${LATEST_VER#"${REV_PREFIX}"}"
-
-
if [[ "${LATEST_VER}" == "${CURRENT_VER}" ]]; then
-
echo "Up to date."
-
exit 0
-
fi
-
-
LATEST_HASH="$(nix-hash --to-sri "${ASSET_DIGEST}")"
-
-
sed -i "s#hash = \"${CURRENT_HASH}\";#hash = \"${LATEST_HASH}\";#g" "${NIX_FILE}"
-
sed -i "s#version = \"${CURRENT_VER}\";#version = \"${LATEST_VER}\";#g" "${NIX_FILE}"
-
-
echo "Successfully updated from ${CURRENT_VER} to version ${LATEST_VER}."