mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2024-12-12 19:18:24 +02:00
d79add341b
This PR introduces a new sub-crate, `ignore`, which primarily provides a fast recursive directory iterator that respects ignore files like gitignore and other configurable filtering rules based on globs or even file types. This results in a substantial source of complexity moved out of ripgrep's core and into a reusable component that others can now (hopefully) benefit from. While much of the ignore code carried over from ripgrep's core, a substantial portion of it was rewritten with the following goals in mind: 1. Reuse matchers built from gitignore files across directory iteration. 2. Design the matcher data structure to be amenable for parallelizing directory iteration. (Indeed, writing the parallel iterator is the next step.) Fixes #9, #44, #45
39 lines
1.3 KiB
Bash
39 lines
1.3 KiB
Bash
# `script` phase: you usually build, test and generate docs in this phase
|
|
|
|
set -ex
|
|
|
|
. $(dirname $0)/utils.sh
|
|
|
|
# NOTE Workaround for rust-lang/rust#31907 - disable doc tests when cross compiling
|
|
# This has been fixed in the nightly channel but it would take a while to reach the other channels
|
|
disable_cross_doctests() {
|
|
if [ $(host) != "$TARGET" ] && [ "$TRAVIS_RUST_VERSION" = "stable" ]; then
|
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
|
brew install gnu-sed --default-names
|
|
fi
|
|
find src -name '*.rs' -type f | xargs sed -i -e 's:\(//.\s*```\):\1 ignore,:g'
|
|
fi
|
|
}
|
|
|
|
run_test_suite() {
|
|
cargo clean --target $TARGET --verbose
|
|
cargo build --target $TARGET --verbose
|
|
cargo test --target $TARGET --verbose
|
|
cargo build --target $TARGET --verbose --manifest-path grep/Cargo.toml
|
|
cargo test --target $TARGET --verbose --manifest-path grep/Cargo.toml
|
|
cargo build --target $TARGET --verbose --manifest-path globset/Cargo.toml
|
|
cargo test --target $TARGET --verbose --manifest-path globset/Cargo.toml
|
|
cargo build --target $TARGET --verbose --manifest-path ignore/Cargo.toml
|
|
cargo test --target $TARGET --verbose --manifest-path ignore/Cargo.toml
|
|
|
|
# sanity check the file type
|
|
file target/$TARGET/debug/rg
|
|
}
|
|
|
|
main() {
|
|
# disable_cross_doctests
|
|
run_test_suite
|
|
}
|
|
|
|
main
|