From 5d3f444f49f5bb542acec01f6cb3b0384bb945db Mon Sep 17 00:00:00 2001 From: lelgenio Date: Sat, 20 Jan 2024 18:31:05 -0300 Subject: [PATCH] dart-sass: add passthru.updateScript --- .../tools/misc/dart-sass/default.nix | 58 ++++++++++--------- .../tools/misc/dart-sass/update.sh | 45 ++++++++++++++ 2 files changed, 77 insertions(+), 26 deletions(-) create mode 100755 pkgs/development/tools/misc/dart-sass/update.sh diff --git a/pkgs/development/tools/misc/dart-sass/default.nix b/pkgs/development/tools/misc/dart-sass/default.nix index 14fef3a3306a..54c7f0aa18de 100644 --- a/pkgs/development/tools/misc/dart-sass/default.nix +++ b/pkgs/development/tools/misc/dart-sass/default.nix @@ -10,10 +10,12 @@ }: let - sass-language = fetchFromGitHub { + embedded-protocol-version = "2.3.0"; + + embedded-protocol = fetchFromGitHub { owner = "sass"; repo = "sass"; - rev = "refs/tags/embedded-protocol-2.3.0"; + rev = "refs/tags/embedded-protocol-${embedded-protocol-version}"; hash = "sha256-J2heASfIwj4lxjsRs/0zRHSaF2tij9bO7IgXp0u/eiI="; }; in @@ -37,7 +39,7 @@ buildDartApplication rec { preConfigure = '' mkdir -p build - ln -s ${sass-language} build/language + ln -s ${embedded-protocol} build/language HOME="$TMPDIR" buf generate ''; @@ -51,31 +53,35 @@ buildDartApplication rec { maintainers = with maintainers; [ lelgenio ]; }; - passthru.tests = { - version = testers.testVersion { - package = dart-sass; - command = "dart-sass --version"; - }; + passthru = { + inherit embedded-protocol-version embedded-protocol; + updateScript = ./update.sh; + tests = { + version = testers.testVersion { + package = dart-sass; + command = "dart-sass --version"; + }; - simple = testers.testEqualContents { - assertion = "dart-sass compiles a basic scss file"; - expected = writeText "expected" '' - body h1{color:#123} - ''; - actual = runCommand "actual" - { - nativeBuildInputs = [ dart-sass ]; - base = writeText "base" '' - body { - $color: #123; - h1 { - color: $color; + simple = testers.testEqualContents { + assertion = "dart-sass compiles a basic scss file"; + expected = writeText "expected" '' + body h1{color:#123} + ''; + actual = runCommand "actual" + { + nativeBuildInputs = [ dart-sass ]; + base = writeText "base" '' + body { + $color: #123; + h1 { + color: $color; + } } - } - ''; - } '' - dart-sass --style=compressed $base > $out - ''; + ''; + } '' + dart-sass --style=compressed $base > $out + ''; + }; }; }; } diff --git a/pkgs/development/tools/misc/dart-sass/update.sh b/pkgs/development/tools/misc/dart-sass/update.sh new file mode 100755 index 000000000000..595349e1387c --- /dev/null +++ b/pkgs/development/tools/misc/dart-sass/update.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p yq ripgrep common-updater-scripts dart + +set -xeu -o pipefail + +PACKAGE_DIR="$(realpath "$(dirname "$0")")" +cd "$PACKAGE_DIR/.." +while ! test -f default.nix; do cd .. ; done +NIXPKGS_DIR="$PWD" + +dart_sass_version="$( + list-git-tags --url=https://github.com/sass/dart-sass \ + | rg '^\d' \ + | sort --version-sort \ + | tail -n1 +)" + +embedded_protocol_version="$( + list-git-tags --url=https://github.com/sass/sass \ + | rg '^embedded-protocol-(.*)' -r '$1' \ + | sort --version-sort \ + | tail -n1 +)" + +cd "$NIXPKGS_DIR" +update-source-version dart-sass "$dart_sass_version" +update-source-version dart-sass "$embedded_protocol_version" \ + --version-key=embedded-protocol-version \ + --source-key=embedded-protocol + +TMPDIR="$(mktemp -d)" +cd "$TMPDIR" + +src="$(nix-build --no-link "$NIXPKGS_DIR" -A dart-sass.src)" +cp $src/pubspec.* . + +# Maybe one day upstream will ship a pubspec.lock, +# until then we must generate a fresh one +if ! test -f pubspec.lock; then + dart pub update +fi + +yq . pubspec.lock > "$PACKAGE_DIR/pubspec.lock.json" + +rm -rf "$TMPDIR"