From d31e17fa566a3f5b71933f4e71c025de16219c70 Mon Sep 17 00:00:00 2001 From: Caleb Chase Date: Thu, 7 Dec 2023 15:04:10 -0600 Subject: [PATCH] sauce-connect: 4.5.4 -> 4.9.1 Latest version on Linux is actually 4.9.2, but latest on Mac is 4.9.1, so only updating to 4.9.1 for consistency between the two. Also added passthru.updateScript to keep this package up to date in the future, with associated refactoring to make that possible. --- .../tools/sauce-connect/default.nix | 34 +++++++++++-------- .../development/tools/sauce-connect/update.sh | 27 +++++++++++++++ 2 files changed, 46 insertions(+), 15 deletions(-) create mode 100755 pkgs/development/tools/sauce-connect/update.sh diff --git a/pkgs/development/tools/sauce-connect/default.nix b/pkgs/development/tools/sauce-connect/default.nix index 69a532ccb5c0..ef47a2e318cd 100644 --- a/pkgs/development/tools/sauce-connect/default.nix +++ b/pkgs/development/tools/sauce-connect/default.nix @@ -2,20 +2,24 @@ stdenv.mkDerivation rec { pname = "sauce-connect"; - version = "4.5.4"; + version = "4.9.1"; - src = fetchurl ( - if stdenv.hostPlatform.system == "x86_64-linux" then { - url = "https://saucelabs.com/downloads/sc-${version}-linux.tar.gz"; - sha256 = "1w8fw47q4bzpk5jfagmc0cbp69jdd6jcv2xl1gx91cbp7xd8mcbf"; - } else if stdenv.hostPlatform.system == "i686-linux" then { - url = "https://saucelabs.com/downloads/sc-${version}-linux32.tar.gz"; - sha256 = "1h9n1mzmrmlrbd0921b0sgg7m8z0w71pdb5sif6h1b9f97cp353x"; - } else { - url = "https://saucelabs.com/downloads/sc-${version}-osx.zip"; - sha256 = "0rkyd402f1n92ad3w1460j1a4m46b29nandv4z6wvg2pasyyf2lj"; - } - ); + passthru = { + sources = { + x86_64-linux = fetchurl { + url = "https://saucelabs.com/downloads/sc-${version}-linux.tar.gz"; + hash = "sha256-S3vzng6b0giB6Zceaxi62pQOEHysIR/vVQmswkEZ0/M="; + }; + x86_64-darwin = fetchurl { + url = "https://saucelabs.com/downloads/sc-${version}-osx.zip"; + hash = "sha256-6tJayqo+p7PMz8M651ikHz6tEjGjRIffOqQBchkpW5Q="; + }; + aarch64-darwin = passthru.sources.x86_64-darwin; + }; + }; + + src = passthru.sources.${stdenv.hostPlatform.system} + or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); nativeBuildInputs = [ unzip ]; @@ -38,7 +42,7 @@ stdenv.mkDerivation rec { sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; license = licenses.unfree; homepage = "https://docs.saucelabs.com/reference/sauce-connect/"; - maintainers = with maintainers; [offline]; - platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ offline ]; + platforms = builtins.attrNames passthru.sources; }; } diff --git a/pkgs/development/tools/sauce-connect/update.sh b/pkgs/development/tools/sauce-connect/update.sh new file mode 100755 index 000000000000..d74cbe577b3c --- /dev/null +++ b/pkgs/development/tools/sauce-connect/update.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p common-updater-scripts curl jq +# API documentation: https://docs.saucelabs.com/dev/api/connect/ + +set -Eeuo pipefail +shopt -s lastpipe +die() { + echo -e "${BASH_SOURCE[0]}:${BASH_LINENO[0]}" ERROR: "$@" >&2 + exit 1 +} +# shellcheck disable=2154 +trap 's=$?; die "$BASH_COMMAND"; exit $s' ERR + +# Versions may not be updated simultaneously across all platforms, so need to figure out the latest +# version that includes both platforms. For example, currently the latest on Linux is 4.9.2 while +# Mac is 4.9.1. +response=$(curl -fsSL 'https://api.us-west-1.saucelabs.com/rest/v1/public/tunnels/info/versions?all=true') +all_versions=$(jq --exit-status --raw-output \ + '.all_downloads | to_entries[] | select(.value | has("linux") and has("osx")) | .key' \ + <<< "$response") +latest_version=$(sort --version-sort <<< "$all_versions" | tail -n 1) +for platform in x86_64-linux x86_64-darwin; do + update-source-version sauce-connect 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" \ + --source-key="passthru.sources.$platform" + update-source-version sauce-connect "$latest_version" \ + --source-key="passthru.sources.$platform" +done