Commit Graph

568 Commits

Author SHA1 Message Date
Tavian Barnes 17d849df6c Compute colors in parallel 2022-10-31 22:23:30 +01:00
Tavian Barnes b2c8888a50 dir_entry: Implement file_name() for broken symlinks 2022-10-31 22:23:30 +01:00
Tavian Barnes 7917c00887 dir_entry: Implement lscolors::Colorable 2022-10-31 22:23:30 +01:00
Thayne McCombs 3782278f02 Improve help output 2022-10-20 00:34:52 -06:00
Thayne McCombs a3622ba294 Remove TODO comment
In favor of tracking scoped threads in #1141
2022-10-19 23:43:45 -06:00
Thayne McCombs aec125637b Fix format 2022-10-14 23:14:03 -06:00
amesgen cb95f1dcd5
Respect exit codes with `--exec-batch` 2022-10-13 23:33:54 +02:00
Thayne McCombs b6f0088b68 Change thread option to take u32 instead of usize
To simplify the option parsing.
2022-10-12 00:33:49 -06:00
Thayne McCombs c2115884de Fix deprecations from clap 4.0 2022-10-11 22:27:57 -06:00
Thayne McCombs aca64c09f8 Actually test if exec or exec-batch is used
By the time we check if we should strip the cwd, we've already moved the
command out of the options, so store if we got that out earlier.
2022-10-09 01:25:03 -06:00
Thayne McCombs 86c33492a7 Fix name of powershell in guess_shell 2022-10-09 01:05:27 -06:00
Thayne McCombs c41d61eeda Merge remote-tracking branch 'upstream/master' into clap-derive 2022-10-09 01:00:48 -06:00
Thayne McCombs 5b9e302e9b Support powershell when guessing shell for completions 2022-10-09 00:02:28 -06:00
Thayne McCombs f4c34b81c7 Upgrade to clap 4.0 2022-10-08 23:51:45 -06:00
Thayne McCombs a50e417c67 Add action clap attribute to fixed_strings 2022-10-08 00:42:11 -06:00
Thayne McCombs ff7336b202 clap derive suggestions from epage 2022-10-08 00:42:11 -06:00
Thayne McCombs e6f4805bae Fix clippy warnings 2022-10-08 00:42:11 -06:00
Thayne McCombs 066ce41299 Fix case of color options to ls 2022-10-08 00:42:11 -06:00
Thayne McCombs b7f5f4ac7d Improve help output after switch to clap-derive
Make it more like it used to be.
2022-10-08 00:42:11 -06:00
Thayne McCombs 4e7b403c1f Use clap-derive for option parsing
This makes the definition of arguments to fd a little more ergonomic,
and makes it easier to insure the types for the arguments are consitent.
2022-10-08 00:41:33 -06:00
Tavian Barnes 4ffc34956f Make --strip-cwd-prefix apply to -x/-X
Fixes #898.
2022-10-03 21:35:39 +02:00
David Peter e3e6057434 Minor adaptation to help text 2022-09-27 21:00:29 +02:00
Scott Baker 12142008df Add a link back to Github to `--help` (but not `-h`) 2022-09-27 21:00:29 +02:00
Tavian Barnes 4419401b6c Enable --strip-cwd-prefix by default except with -0
Fixes #1046.
2022-09-27 20:56:24 +02:00
Tavian Barnes e46d402ed1 Enable jemallocator on 64-bit musl builds
Partial fix for #710 and #980.
2022-09-19 21:10:05 +02:00
David Peter 9ea882d7cc Fix clippy suggestions 2022-09-11 21:29:43 +02:00
David Peter 2569317ee8 Revert changes in help text, add /issues in manpage 2022-09-11 21:05:06 +02:00
Scott Baker cb91a5c848 Simplify some whitespace on lines 2022-09-11 21:05:06 +02:00
Scott Baker fcf8099587 Add Github URL to `--help` also 2022-09-11 21:05:06 +02:00
Marie Katrine Ekeberg d6b1d16bfc Use to_string_lossy to avoid relying on Debug-outputs 2022-09-11 20:58:50 +02:00
Marie Katrine Ekeberg c7370ca82c Simplistic "Command not found" error message 2022-09-11 20:58:50 +02:00
Tavian Barnes cbc6ddeefc Implement --type executable on Windows
Fixes #1051.
2022-09-11 20:46:19 +02:00
Sijmen cb6295d025 Move current_directory variable definition closer to usage 2022-08-10 20:01:21 +02:00
Sijmen fdcbb2f008 Allow working directory to be nonexistent if search path is given
Fixes #1072
2022-08-10 20:01:21 +02:00
David Peter 8b96a1e99c Update documentation of --batch-size feature 2022-05-28 22:59:46 +02:00
Tavian Barnes 40b368e761 exec: Execute batches before they get too long
Fixes #410.
2022-05-28 22:19:47 +02:00
David Peter 41affe18c4 Merge remote-tracking branch 'origin/master' into yyogo/master 2022-05-15 16:31:06 +02:00
David Peter f57206a3a1 Update help text and man page 2022-05-15 16:22:24 +02:00
Jackson Theel cbf3f11cf8 Make -u idempotent 2022-05-15 16:22:24 +02:00
Hang Qian 3f6ff2ca32 Match against reference instead of value 2022-04-02 20:56:38 +02:00
Jonathan Goren 60c14b1af2 make DirEntry Ord 2022-03-16 18:38:16 +02:00
Jonathan Goren 47e30d3d4a add actual path separator value to config 2022-03-16 18:13:05 +02:00
Thayne McCombs 38b84d08d7
Fix mistakes from resolving conflicts 2022-03-15 01:40:05 -06:00
Thayne McCombs 50c0fa812f
Merge branch 'master' into master 2022-03-15 01:20:35 -06:00
Thayne McCombs c577b0838b Error out if no args provided to --exec or --exec-batch
Accepting multiple occurances means we need to check this ourselves. See
https://github.com/clap-rs/clap/issues/3542.
2022-03-08 10:15:48 +01:00
Thayne McCombs 5a12a5e421 Use full names in command.rs 2022-03-08 10:15:48 +01:00
Thayne McCombs 9fb0c5d372 Group together output from multi exec commands
So that if multiple `--exec` options are given, and the commands are run
in parallel, the buffered output for related commands will be
consecutive.
2022-03-08 10:15:48 +01:00
Thayne McCombs f27332ee8d Fix clippy lints 2022-03-08 10:15:48 +01:00
Thayne McCombs 0aee9b0fd9 Support multiple `--exec` instances
and `--exec-batch`.

Fixes: #406
2022-03-08 10:15:48 +01:00
Thayne McCombs 6e5c8d9c20 Fix some clippy warnings 2022-03-04 08:30:41 +01:00
Thayne McCombs bbdb8b9d9e Upgrade to clap 3.1
And fix deprecations
2022-03-02 23:32:04 -07:00
Thayne McCombs 43f276e073 Upgrade to clap 3.0
This wasn't backwards compatible so required some more substantial
changes.
2022-01-07 23:56:03 -07:00
Tavian Barnes e7f192f1c6 Revert "Switch from std::sync::mpsc to crossbeam-channel"
@sharkdp [noticed][1] a quite severe performance degredation due to this
change.  Switch back to std::sync::mpsc until we can fix the performance
regression.

This reverts commit a4bb734482.

[1]: https://github.com/sharkdp/fd/pull/895#issuecomment-1002099369
2021-12-28 12:11:32 -05:00
Yujia Qiao e5145ffb98 fix: disable jemalloc on risc-v target
`jemallocator` does not support risc-v and fails the compilation.
This fixes build for risc-v.
2021-12-28 17:38:28 +01:00
eatradish 639ed34791 Allow use to disable jemalloc
jemalloc will require special flags on devices where page size is not 4K. With default options fd will not work on a Mac Mini M1 where hardware only allow 16K paging size. This commit will allow the user to turn off jemalloc (using --no-default-features) under special circumstances where jemalloc is not usable.
2021-12-28 14:15:45 +01:00
Thayne McCombs b7e077320d
Fix logic for --no-ignore-parent (#908)
Make sure that using `--no-ignore-vcs` or `--no-ignore` don't also
enable `--no-ignore-parent`. So that if `--no-ignore-vcs` is enabled, it
continues to respect .fdignore and .ignore in the parent directories.

Fixes: #907
Fixes: #901
2021-12-22 23:38:00 -07:00
Jonathan Goren 22dbed0545 convert to path instead of cloning in batch exec
update changelog
2021-12-11 15:43:53 +02:00
Jonathan Goren 3dc61b5f28 rename module entry -> dir_entry 2021-12-11 15:43:52 +02:00
Jonathan Goren a26bd3232c append trailing slash to folders
update changelog
2021-12-11 15:43:23 +02:00
Jonathan Goren 813a802b2c send DirEntries to output instead of just path 2021-12-11 15:42:07 +02:00
Tavian Barnes 81669f4c10
Merge pull request #902 from tavianator/quit-senders
Quit senders more aggressively
2021-12-10 13:56:28 -05:00
Thayne McCombs 5ea7cb7a05
A couple of minor recommendations from the Code Quality action (#903)
use derive for a Default impl, and use a function directly instead of
needlessly wrapping it in a closure
2021-12-07 10:04:17 -07:00
Tavian Barnes 4baefb2f5a walk: Split wants_to_quit into two separate flags
quit_flag is now used to quit the sender threads for any reason, either
due to an interrupt or because the receiver is done.

interrupt_flag is used specifically for ^C interrupts, and causes the
receiver to stop between printing paths, to avoid unfinished escape
sequences when colors are being used.

Fixes #867.
2021-12-05 12:06:49 -05:00
Tavian Barnes 97a8825b00 output: Remove wants_to_quit handling from print_entry()
Since we only check it once per path now, we might as well just check it
before printing anything.
2021-12-05 12:06:49 -05:00
Tavian Barnes 7fe4bfaacb
Merge pull request #895 from tavianator/receiver-buffer
walk: Encapsulate the buffering behavior in a struct
2021-12-05 11:56:22 -05:00
Tavian Barnes a4bb734482 Switch from std::sync::mpsc to crossbeam-channel
This lets us avoid https://github.com/rust-lang/rust/issues/39364, which
could potentially be seen now that we're using recv_timeout().
2021-12-01 10:24:58 -05:00
Alexander Sieg 5fbfdfadb8 fix: disable jemalloc on FreeBSD
As jemalloc is the default system allocator on FreeBSD and the
jemalloc-sys crate failes to compile on FreeBSD, this fixes the build on
FreeBSD.
2021-11-28 17:42:15 +01:00
Tavian Barnes 16ae03c3b4 walk: Encapsulate the buffering behavior in a struct
The new ReceiverBuffer struct allows us to factor out the receiver
implementation into a number of helper methods.  The new implementation
uses rx.{recv,recv_timeout} instead of a for loop, which enables us to
switch to streaming mode at the right time without waiting for more
results.

Fixes #868.
2021-11-27 12:56:22 -05:00
David Peter f219da4b3a Use non-sync channel 2021-11-26 21:23:47 +01:00
Thayne McCombs e990a13405 squash! Add buffering to stdout when it's not a terminal
Co-authored-by: sourlemon207 <jw1756@protonmail.com>
2021-11-26 21:23:47 +01:00
Thayne McCombs feac240eb5 Add buffering to stdout when it's not a terminal
This is based on the work of #736 by @sourlemon207.

I've added the suggestion I recommended on that PR.
2021-11-26 21:23:47 +01:00
David Peter 92bd7850d0 Merge remote-tracking branch 'origin/master' into no-strip/760 2021-11-26 18:19:28 +01:00
David Peter 776f8d0f11 Shorten short help text 2021-11-26 17:58:18 +01:00
David Peter 47421a49b8 Remove strip-prefix placeholders 2021-11-26 17:58:18 +01:00
David Peter f347379fb0 Adapt help text 2021-11-26 17:48:31 +01:00
David Peter 4d7e34ad59 Rename option to strip_cwd_prefix, rename CLI option 2021-11-26 17:46:04 +01:00
Shun Sakai 0484486f3f Remove `lazy_static` from dependencies 2021-11-25 20:06:43 +01:00
Jacob Mischka f32060b0de Change time comparisons to exclusive
Closes #794
2021-11-17 23:38:28 +01:00
Tavian Barnes fe992706ae Raise SIGINT when dying by ^C
Fixes #854.
2021-11-15 07:53:57 +01:00
Tavian Barnes 2b1bf471b1 Add an exit() method to ExitCode 2021-11-15 07:53:57 +01:00
David Peter 088e42deef Improve --type help text
closes #823
2021-11-14 21:17:57 +01:00
Tavian Barnes 66e3ccc5e1 Don't color each path component separately
It can be expensive to color each path component separately, requiring a
stat() call on each component.  For deep hierarchies this can result in
quadratic overhead.  Instead, just color the path up to the basename as
a directory.

Fixes #720.
2021-11-14 17:42:16 +01:00
David Peter 21fd013073 Improve --full-path documentation, closes #839 2021-11-14 17:16:44 +01:00
David Peter cdc6a37ed6 Merge remote-tracking branch 'origin/master' into pr/opposing-options 2021-11-14 16:47:53 +01:00
David Peter 2570fbd04e Add longer help text for --prune, closes #727 2021-11-14 16:29:10 +01:00
Devon Hollowood 17dd2a6dfe
Implement `--batch-size` (#866) 2021-10-22 00:05:13 -06:00
Jonah Caplan bf9e6fd36e add -P option to strip prefix to tty 2021-10-17 00:29:51 -04:00
Jonah Caplan 46db1c4ef3 add {-} format for exec 2021-10-16 23:52:04 -04:00
Jonah Caplan a41021b0d2 use interactive_terminal 2021-10-16 14:34:58 -04:00
Jonah Caplan 82f04755bf hopefully fix build error on windows 2021-10-16 14:21:11 -04:00
Jonah Caplan c42bf4b904 don't strip paths for -X/x, and for tty output 2021-10-16 14:15:37 -04:00
Jonah Caplan fbc836b553 Revert -X stuff
This reverts commit 91860bf682.
2021-10-16 14:03:23 -04:00
Jonah Caplan 91860bf682 fmt 2021-10-16 00:02:37 -04:00
Jonah Caplan a4a4709320 rename Option to Config 2021-10-15 23:59:47 -04:00
Jonah Caplan b6f8bc8ff8 also handle -X and -x with no_strip 2021-10-15 23:57:03 -04:00
Jonah Caplan 2e115df9e7 simplify check in prent_entry 2021-10-15 23:57:03 -04:00
Jonah Caplan 953f586f26 replace -N option with specifying '.' path 2021-10-15 23:57:03 -04:00
Jonah Caplan 6b92c5db90 add -N/--no-strip option to show "./" prefix on relative paths 2021-10-15 23:56:36 -04:00
Tavian Barnes 7b5b3ec47b walk: Add a cache for DirEntry metadata 2021-10-13 09:13:44 +02:00
Niklas Mohrin 02e9850112 Refactor: Rename `Options` to `Config` 2021-10-12 18:49:07 +02:00