diff --git a/pkgs/tools/admin/ibmcloud-cli/default.nix b/pkgs/tools/admin/ibmcloud-cli/default.nix index 1c99a48b0203..6aec2f7538dc 100644 --- a/pkgs/tools/admin/ibmcloud-cli/default.nix +++ b/pkgs/tools/admin/ibmcloud-cli/default.nix @@ -3,6 +3,7 @@ stdenv, fetchurl, installShellFiles, + writableTmpDirAsHomeHook, }: let arch = @@ -29,50 +30,54 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "ibmcloud-cli"; - version = "2.30.0"; + version = "2.34.0"; src = fetchurl { url = "https://download.clis.cloud.ibm.com/ibm-cloud-cli/${finalAttrs.version}/binaries/IBM_Cloud_CLI_${finalAttrs.version}_${platform}.tgz"; - sha256 = + hash = { - "x86_64-darwin" = "5d4d16f35c034aa336e28b5685684146ec5773a6d7f456ed0d0e5d686adf4b25"; - "aarch64-darwin" = "d563b8a4214da4360756bd18283b68c118139b5d3dd1b1d31c7ab7e61349e126"; - "x86_64-linux" = "e6c874702851f16a3c21570020da85122a0ec0ca7e9dd75091684df1030d7295"; - "aarch64-linux" = "6904c9de54845adcd08eb9906567493b68ad3f4cbba9d1121f63d9df2dd47185"; - "i686-linux" = "bc6be9a65a6942e158ab202a2d1c89c4294b5cebf60841f4ac1d21064052e7e7"; - "powerpc64le-linux" = "271a0aa9c0a1dc2c84772fba33c9c6b97588d35eccf6757de6974c433b6e7874"; - "s390x-linux" = "e8ec8adaaae2eab091500c257c7b18acf5e9556b4910df8290600bd7f723fdc1"; + "x86_64-darwin" = "sha256-6E+yUqpX8kp/T4jxAWwkBUsCQh31vwJGw3wnqkUs3Js="; + "aarch64-darwin" = "sha256-CK0fUIYDVx25EzXGdhexaChVxkifSn6BKtZTQB5wl1o="; + "x86_64-linux" = "sha256-xYuVEkgbVQNdR/v9C0Do9wMeOYlfntRJaen/XaHMJvQ="; + "aarch64-linux" = "sha256-MXr6NpO3XhrCbcss3Y+GzkbgQ07iOzmp99lAtfZ8YMk="; + "i686-linux" = "sha256-1oL+jn3KTfIE+2oW4i8+RUr/c9/Ew/H7PToe/l19C5s="; + "powerpc64le-linux" = "sha256-hZADXpi9zxRB+wy4V4owQqmE3BYRSenNjlUfjWqBnow="; + "s390x-linux" = "sha256-ayQZD4+6U6WLfIhbVy/HCATjhZYybk3/83ak7BruWQ8="; } .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }; - nativeBuildInputs = [ installShellFiles ]; + nativeBuildInputs = [ + installShellFiles + writableTmpDirAsHomeHook + ]; installPhase = '' runHook preInstall - install -D ibmcloud $out/bin/ibmcloud + install -Dm755 ibmcloud $out/bin/ibmcloud mkdir -p $out/share/ibmcloud cp LICENSE NOTICE $out/share/ibmcloud - export HOME=$(mktemp -d) installShellCompletion --cmd ibmcloud --bash <($out/bin/ibmcloud --generate-bash-completion) runHook postInstall ''; - meta = with lib; { + passthru.updateScript = ./update.sh; + + meta = { description = "Command line client for IBM Cloud"; homepage = "https://cloud.ibm.com/docs/cli"; - license = licenses.asl20; - maintainers = with maintainers; [ emilytrau ]; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ emilytrau ]; platforms = [ "x86_64-linux" "aarch64-linux" "i686-linux" "powerpc64le-linux" "s390x-linux" - ] ++ platforms.darwin; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + ] ++ lib.platforms.darwin; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; mainProgram = "ibmcloud"; }; }) diff --git a/pkgs/tools/admin/ibmcloud-cli/update.sh b/pkgs/tools/admin/ibmcloud-cli/update.sh new file mode 100755 index 000000000000..c2b80cb104f2 --- /dev/null +++ b/pkgs/tools/admin/ibmcloud-cli/update.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p bash nix-update common-updater-scripts nix jq + +set -euo pipefail + +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; ibmcloud-cli.version or (lib.getVersion ibmcloud-cli)" | tr -d '"') +latestVersion=$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} -sL https://api.github.com/repos/IBM-Cloud/ibm-cloud-cli-release/releases/latest | jq --raw-output .tag_name | sed 's/^v//') + +if [[ "$currentVersion" == "$latestVersion" ]]; then + echo "package is up-to-date: $currentVersion" + exit 0 +fi + +update-source-version ibmcloud-cli $latestVersion || true + +for system in \ + x86_64-linux \ + aarch64-linux \ + i686-linux \ + powerpc64le-linux \ + s390x-linux \ + x86_64-darwin \ + aarch64-darwin; do + tmp=$(mktemp -d) + curl -fsSL -o $tmp/ibmcloud-cli $(nix-instantiate --eval -E "with import ./. {}; ibmcloud-cli.src.url" --system "$system" | tr -d '"') + hash=$(nix hash file $tmp/ibmcloud-cli) + update-source-version ibmcloud-cli $latestVersion $hash --system=$system --ignore-same-version + rm -rf $tmp +done