|tastytea 449e315397||4 days ago|
|cmake||1 year ago|
|dist/termcolor||1 year ago|
|man||1 year ago|
|src||2 months ago|
|tests||2 months ago|
|translations||1 year ago|
|.clang-format||1 year ago|
|.clang-tidy||2 months ago|
|.cmake-format.json||1 month ago|
|.drone.yml||2 months ago|
|.editorconfig||1 year ago|
|.gitignore||1 year ago|
|AUTHORS||1 year ago|
|CMakeLists.txt||2 months ago|
|CMakePresets.json||1 year ago|
|CODE_OF_CONDUCT.adoc||1 year ago|
|CONTRIBUTING.adoc||1 year ago|
|CREDITS||1 year ago|
|LICENSE||1 year ago|
|README.adoc||4 days ago|
|screenshot.png||1 year ago|
epubgrep is a search tool for EPUB e-books. It does not operate on lines, but on whole files. All newlines will be replaced by spaces and HTML will be stripped. This means you can search for text spanning multiple lines and don’t have to worry about HTML tags in the text.
See man page for more information.
sudo eselect repository enable guru echo 'app-text/epubgrep' | sudo tee -a /etc/portage/package.accept_keywords/epubgrep sudo emaint sync -r guru sudo emerge -a app-text/epubgrep
Debian and Ubuntu
wget -O - https://tastytea.de/tastytea.asc | sudo apt-key add - sudo add-apt-repository 'deb https://apt.schlomp.space/[code name] [code name] main' sudo apt install epubgrep
Replace [code name] with the code name of your installation. Packages are available for bullseye (Debian 11), buster (Debian 10), focal (Ubuntu 20.04) and bionic (Ubuntu 18.04).
If you get the error message that
Tested OS: Linux
CMake (at least: 3.12)
Boost (tested: 1.75.0 / 1.65.0)
gettext (tested: 0.21 / 0.19)
libarchive (tested: 3.5 / 3.2)
fmt (tested: 7.0 / 4.0)
AsciiDoc (tested: 9.0 / 8.6)
Termcolor (tested: 2.0) (If not found, the bundled version is used.)
pugixml (tested: 1.11 / 1.8)
nlohmann_json (tested: 3.9 / 2.1)
Tests: Catch (tested: 2.13 / 1.10)
Install dependencies in Debian or Ubuntu
Or distributions that are derived from Debian or Ubuntu. You will need at least Debian buster (10) or Ubuntu focal (20.04).
sudo apt install build-essential cmake libboost-program-options-dev \ libboost-locale-dev libboost-regex-dev libboost-log-dev \ gettext libarchive-dev libfmt-dev asciidoc libpugixml-dev \ nlohmann-json-dev
Install dependencies in openSUSE
Tested on openSUSE Leap 15.3.
sudo zypper install cmake gcc10-c++ rpm-build \ libboost_program_options1_75_0-devel \ libboost_locale1_75_0-devel libboost_log1_75_0-devel \ fmt-devel libarchive-devel pugixml-devel \ nlohmann_json-devel asciidoc
Download the current release at schlomp.space.
git clone https://schlomp.space/tastytea/epubgrep.git
In a terminal, go to the directory where you unpacked / cloned the source code and then:
cmake -S . -B build cmake --build build --parallel $(nproc --ignore=1)
To install, run
sudo cmake --install build. To run the tests, run
If you are using Debian or Ubuntu, or a distribution that is derived from these,
you can run
-DCMAKE_BUILD_TYPE=Debugfor a debug build.
-DWITH_TESTS=YESif you want to compile the tests.
-DXGETTEXT_CMD=StringThe program to use instead of
-DFALLBACK_BUNDLED=NOif you don’t want to fall back on bundled libraries.
-DWITH_SANITIZER=YESto use sanitizers in debug builds.
A test with a directory containing 3333 EPUBs and 6269 files in total showed this difference between epubgrep-0.6.2 and ripgrep-all-0.9.6:
% hyperfine "epubgrep 'floor' ~/Books" "rga 'floor' ~/Books" Benchmark #1: epubgrep 'floor' ~/Books Time (mean ± σ): 167.246 s ± 3.848 s [User: 176.251 s, System: 79.107 s] Range (min … max): 161.533 s … 173.647 s 10 runs Benchmark #2: rga 'floor' ~/Books Time (mean ± σ): 9.219 s ± 0.506 s [User: 17.540 s, System: 12.773 s] Range (min … max): 8.571 s … 9.923 s 10 runs Summary 'rga 'floor' ~/Books' ran 18.14 ± 1.08 times faster than 'epubgrep 'floor' ~/Books'
How to contribute
Read the Code of Conduct.
Reporting bugs or suggesting enhancements
Before reporting a bug, please
perform a search to see if the
problem has already been reported. If it has, add a comment to the existing
issue instead of opening a new one. Same for enhancements. It is helpful to
re-run the command producing a bug with
--debug and attaching the log
file to the bug report. The log file of the last run is usually in
Please use similar coding conventions as the rest of the project. The basic rule to remember is to write code in the same style as the existing/surrounding code.
Add a copyright line with the year, your name and your email address to the files you edited. Add your name and email to AUTHORS. Unless you don’t want to.
Creating a new translation
To create a new translation, copy
translations/[LANGUAGE ABBREVIATION].po (Replace [LANGUAGE ABBREVIATION] with
the correct abbreviation for your language, e.g. “es” if you are translating
into Spanish or “pt_BR” if you are translating into Brazilian Portuguese). The
pot-file is generated during the build process.
Open your new po file with your favourite text editor, (or you may prefer to use a translation catalog editor like Poedit), and first edit the header section of your file. You will need to replace the text in UPPERCASE with the correct values. The easiest way to work out how to do this is to compare it to another po file that already exists.
Updating your translation
When it is time to update your translation, first update your Git working directory. Then do the following:
cmake --build build cd translations msgmerge --update es.po epubgrep.pot
Then open your file and locate the strings that need updating. These will have an empty msgstr or will be marked “fuzzy”.
The translation guide is based on https://www.claws-mail.org/faq/index.php/Translator's_Information, licensed under GFDL-1.2-only.