biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / development / tools / misc / dart-sass / default.nix
blob6ca7e8f43987b668d656f87a02a42571b940fe21
1 { lib
2 , fetchFromGitHub
3 , buildDartApplication
4 , buf
5 , protoc-gen-dart
6 , testers
7 , dart-sass
8 , runCommand
9 , writeText
12 let
13   embedded-protocol-version = "2.6.0";
15   embedded-protocol = fetchFromGitHub {
16     owner = "sass";
17     repo = "sass";
18     rev = "refs/tags/embedded-protocol-${embedded-protocol-version}";
19     hash = "sha256-pNQnbOKVxRW9AiPteuO2Gq6ejV5Yd9GTuxZSyC/0SlE=";
20   };
22 buildDartApplication rec {
23   pname = "dart-sass";
24   version = "1.75.0";
26   src = fetchFromGitHub {
27     owner = "sass";
28     repo = pname;
29     rev = version;
30     hash = "sha256-nj1CCg/eID5dmW/omIGQYNP/uOKNvMzgo3RLBGLULKI=";
31   };
33   pubspecLock = lib.importJSON ./pubspec.lock.json;
35   nativeBuildInputs = [
36     buf
37     protoc-gen-dart
38   ];
40   preConfigure = ''
41     mkdir -p build
42     ln -s ${embedded-protocol} build/language
43     HOME="$TMPDIR" buf generate
44   '';
46   dartCompileFlags = [ "--define=version=${version}" ];
48   meta = with lib; {
49     homepage = "https://github.com/sass/dart-sass";
50     description = "The reference implementation of Sass, written in Dart";
51     mainProgram = "sass";
52     license = licenses.mit;
53     maintainers = with maintainers; [ lelgenio ];
54   };
56   passthru = {
57     inherit embedded-protocol-version embedded-protocol;
58     updateScript = ./update.sh;
59     tests = {
60       version = testers.testVersion {
61         package = dart-sass;
62         command = "dart-sass --version";
63       };
65       simple = testers.testEqualContents {
66         assertion = "dart-sass compiles a basic scss file";
67         expected = writeText "expected" ''
68           body h1{color:#123}
69         '';
70         actual = runCommand "actual"
71           {
72             nativeBuildInputs = [ dart-sass ];
73             base = writeText "base" ''
74               body {
75                 $color: #123;
76                 h1 {
77                   color: $color;
78                 }
79               }
80             '';
81           } ''
82           dart-sass --style=compressed $base > $out
83         '';
84       };
85     };
86   };