biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / text / ripgrep / default.nix
blobe3270f359f1b95c0e4d5fcf038b685bccf39f28a
1 { lib, stdenv
2 , buildPackages
3 , fetchFromGitHub
4 , rustPlatform
5 , installShellFiles
6 , pkg-config
7 , Security
8 , withPCRE2 ? true
9 , pcre2
12 let
13   canRunRg = stdenv.hostPlatform.emulatorAvailable buildPackages;
14   rg = "${stdenv.hostPlatform.emulator buildPackages} $out/bin/rg";
15 in rustPlatform.buildRustPackage rec {
16   pname = "ripgrep";
17   version = "14.1.1";
19   src = fetchFromGitHub {
20     owner = "BurntSushi";
21     repo = pname;
22     rev = version;
23     hash = "sha256-gyWnahj1A+iXUQlQ1O1H1u7K5euYQOld9qWm99Vjaeg=";
24   };
26   cargoHash = "sha256-b+iA8iTYWlczBpNq9eyHrWG8LMU4WPBzaU6pQRht+yE=";
28   nativeBuildInputs = [ installShellFiles ]
29     ++ lib.optional withPCRE2 pkg-config;
30   buildInputs = lib.optional withPCRE2 pcre2
31     ++ lib.optional stdenv.hostPlatform.isDarwin Security;
33   buildFeatures = lib.optional withPCRE2 "pcre2";
35   preFixup = lib.optionalString canRunRg ''
36     ${rg} --generate man > rg.1
37     installManPage rg.1
39     installShellCompletion --cmd rg \
40       --bash <(${rg} --generate complete-bash) \
41       --fish <(${rg} --generate complete-fish) \
42       --zsh <(${rg} --generate complete-zsh)
43   '';
45   doInstallCheck = true;
46   installCheckPhase = ''
47     file="$(mktemp)"
48     echo "abc\nbcd\ncde" > "$file"
49     ${rg} -N 'bcd' "$file"
50     ${rg} -N 'cd' "$file"
51   '' + lib.optionalString withPCRE2 ''
52     echo '(a(aa)aa)' | ${rg} -P '\((a*|(?R))*\)'
53   '';
55   meta = with lib; {
56     description = "Utility that combines the usability of The Silver Searcher with the raw speed of grep";
57     homepage = "https://github.com/BurntSushi/ripgrep";
58     changelog = "https://github.com/BurntSushi/ripgrep/releases/tag/${version}";
59     license = with licenses; [ unlicense /* or */ mit ];
60     maintainers = with maintainers; [ globin ma27 zowoq ];
61     mainProgram = "rg";
62   };