nixpkgs/pkgs/tools/text/ripgrep-all/default.nix
Maximilian Bosch 9842c4b107
treewide: update which packages I'm currently maintaining
Idea shamelessly stolen from 4e60b0efae.

I realized that I don't really know anymore where I'm listed as maintainer and what
I'm actually (co)-maintaining which means that I can't proactively take
care of packages I officially maintain.

As I don't have the time, energy and motivation to take care of stuff I
was interested in 1 or 2 years ago (or packaged for someone else in the
past), I decided that I make this explicit by removing myself from several
packages and adding myself in some other stuff I'm now interested in.

I've seen it several times now that people remove themselves from a
package without removing the package if it's unmaintained after that
which is why I figured that it's fine in my case as the affected pkgs
are rather low-prio and were pretty easy to maintain.
2019-12-26 15:27:47 +01:00

64 lines
2 KiB
Nix

{ stdenv, lib, fetchFromGitHub, rustPlatform, makeWrapper, ffmpeg
, pandoc, poppler_utils, ripgrep, Security, imagemagick, tesseract
}:
rustPlatform.buildRustPackage rec {
pname = "ripgrep-all";
version = "0.9.3";
src = fetchFromGitHub {
owner = "phiresky";
repo = pname;
rev = version;
sha256 = "0fxvnd8qflzvqz2181njdhpbr4wdvd1jc6lcw38c3pknk9h3ymq9";
};
cargoSha256 = "1jcwipsb7sl65ky78cypl4qvjvxvv4sjlwcg1pirgmqikcyiiy2l";
nativeBuildInputs = [ makeWrapper ];
buildInputs = lib.optional stdenv.isDarwin Security;
postInstall = ''
wrapProgram $out/bin/rga \
--prefix PATH ":" "${lib.makeBinPath [ ffmpeg pandoc poppler_utils ripgrep imagemagick tesseract ]}"
'';
# Use upstream's example data to run a couple of queries to ensure the dependencies
# for all of the adapters are available.
installCheckPhase = ''
set -e
export PATH="$PATH:$out/bin"
test1=$(rga --rga-no-cache "hello" exampledir/ | wc -l)
test2=$(rga --rga-no-cache --rga-adapters=tesseract "crate" exampledir/screenshot.png | wc -l)
if [ $test1 != 26 ]
then
echo "ERROR: test1 failed! Could not find the word 'hello' 26 times in the sample data."
exit 1
fi
if [ $test2 != 1 ]
then
echo "ERROR: test2 failed! Could not find the word 'crate' in the screenshot."
exit 1
fi
'';
doInstallCheck = true;
meta = with stdenv.lib; {
description = "Ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, and more";
longDescription = ''
Ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.
rga is a line-oriented search tool that allows you to look for a regex in
a multitude of file types. rga wraps the awesome ripgrep and enables it
to search in pdf, docx, sqlite, jpg, movie subtitles (mkv, mp4), etc.
'';
homepage = https://github.com/phiresky/ripgrep-all;
license = with licenses; [ agpl3Plus ];
maintainers = with maintainers; [ zaninime ma27 ];
platforms = platforms.all;
};
}