Commit Graph

122 Commits

Author SHA1 Message Date
andy.boot 7c54d41ace dependency: remove atty
Read input from clap
2023-11-09 23:23:05 +00:00
andy.boot 514bb2799c Fix: some panics are occuring when creating rayon
Wrap and ignore these panics.

I can't reproduce this problem but I'm curious to know if this fixes it
2023-03-14 08:15:19 +00:00
Efertone 2f7c197cd7 feat: default option for depth from config file
- If `--depth` flag is not defined (or it has an invalid value), a value
  from the config file will be used.
- If no `depth` entry in the config file (or there is no config file),
  the default `usize::MAX` will be used.

Added test cases:
- no config and no flag defined              -> `usize::MAX` should be used
- config defined, but flag is not defined    -> config value should be used
- config is not defined, but flag is defined -> flag value should be used
- both config and flag is defined            -> flag value should be used

Additional changes:

- Fixed some clippy issues.
- Added comments to the example `config.toml` file.
  (copy from flag description)

Closes: #314

Signed-off-by: Balazs Nadasdi <efertone@pm.me>
2023-03-06 21:43:15 +00:00
andy.boot 7d13fe972c refactor: DisplayData 2023-02-04 11:20:50 +00:00
andy.boot 7efdf63fbc fix: Stop progress indicator crashing into stderr 2023-01-29 10:24:36 +00:00
andy.boot 184d1ec5e8 Feature: Add flag for screen readers
Screen reader mode will,
Reverse direction
Not shows symbols (directory hierarchy or percentage bars)
Adds a column 'depth' to show depth of directory
2023-01-29 09:52:10 +00:00
andy.boot 1495251ebc feature: --files-only -F
Add feature to only show files skipping directories.
2023-01-29 09:34:40 +00:00
andy.boot 810cc8b604 clippy: Fix new clippy rules 2023-01-26 23:37:55 +00:00
andy.boot 6c130adb6c Refactor: PAtomicInfo class 2023-01-17 23:34:20 +00:00
andy.boot 9f0f366187 Refactor: progress bar & file permissions
Move permissions flag into shared pdata object.

Fixed bug where permissions flag was not being set correctly
2023-01-17 23:34:20 +00:00
andy.boot 414bc9e5a7 Refactor: Progress bar: Remove PConfig 2023-01-17 23:34:20 +00:00
andy.boot 5bfa44ec77 Refactor: progress bar: rm unused field 2023-01-17 23:34:20 +00:00
andy.boot 03a8d643c5 Refactor: Simplify progress indicator
Reduce & simlpify.

Cut feature: where we only report file count, it is always
useful to see file size as well.

cut feature: plural of file. If dust has only indexed a single file by
the time it prints the status then something has gone wrong, safe to
always assume a plural.
2023-01-14 16:51:32 +00:00
andy.boot 29957c1f2c refactor: update Progress bar: progress.rs
Remove none-needed macro
2023-01-14 16:51:32 +00:00
andy.boot 400ff513f4 Refactor: Update main for progress bar 2023-01-14 16:51:32 +00:00
NovaliX f3c074759d Implemented a progress indicator (#275)
* v1.0

* renamed operations to be more clear

* put info later because there is still operations par of the preparing process

* updated the last line clearing

* changed name of module and structs to ones that make more sens

* Disable size computation when file_count option is set

* added sleep during the thread waiting

* use 1024 powered instead of 10 to compute showed number

* include DS_Store

* added files directories skipped information

* small format update

* implement the -H option

* put wait back

* remove PAtomicInfo since it's not used

* cargo fmt

* wrapped atomic operations to reduce overhead

* updated comments

* Use AtomicU64Wrapper instead of AtomicU64 in TotalSize

* update size suffix

* sto dividing size when larger than terabytes

* Fix use_iso flag not be set properly

* update properties display

* some reformating

* use stdout instead of print

* Moved config instance into main because it's easier to read

* merge base formatting into macro

* update name to be more intuitive and separated math operations for more flexibility

* print currently indexed path

* cargo fmt

* reset size between each target dirs

* Access to TotalSize rather than it's inner

* small comment change

* Update sysinfo version to 0.26.7

* fix: update use of sysinfo.system

System is now much quicker to start but requires an explicit call
to refresh memory else it deafults to 0 (oops)

* clippy: Fix new clippy

* fix: bug where hard links could be double counted

When running:
dust dir_a dir_b

if a file was hard linked in both dir_a and dir_b it would be double
counted.

This fix resolves this by keeping the shared hashmap around between runs
for the second and subsequent arguments.
https://github.com/bootandy/dust/issues/282

* Fix: depth=0 bug for multiple arguments

https://github.com/bootandy/dust/issues/282

* refactor filter.rs

* refactor filter.rs

* refactor create AggregateData for filter.rs

* feature: Support for dereference links -L follow

du has -L flag which allows it to dereference or follow
symlinks. Clone this feature into dust.
https://github.com/bootandy/dust/issues/276

* refactor dir_walker

I find this layout cleaner

* v1.0

* changed name of module and structs to ones that make more sens

* Disable size computation when file_count option is set

* added files directories skipped information

* implement the -H option

* wrapped atomic operations to reduce overhead

* used human_readable_number function in display module rather than our own

* implemented progress disabling

* cargo fmt & cargo clippy

Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
Co-authored-by: andy.boot <bootandy@gmail.com>
2023-01-14 11:43:22 +00:00
andy.boot abcc46c5ea feature: Support for dereference links -L follow
du has -L flag which allows it to dereference or follow
symlinks. Clone this feature into dust.
https://github.com/bootandy/dust/issues/276
2023-01-07 14:49:02 +00:00
andy.boot a3ab5bfe0f refactor create AggregateData for filter.rs 2023-01-07 14:16:03 +00:00
andy.boot a7b82f32d7 fix: update use of sysinfo.system
System is now much quicker to start but requires an explicit call
to refresh memory else it deafults to 0 (oops)
2023-01-04 20:08:20 +00:00
Guillaume Gomez 72b811c278 Update sysinfo version to 0.26.7 2023-01-04 19:38:40 +00:00
DIRE 2ca7177446 FEATURE: support only directories will be displayed. Flag -D 2022-10-05 23:26:10 +01:00
Collin Styles e858f9e976 Read inputs from stdin when applicable 2022-10-01 11:16:14 +01:00
andy.boot c363e5ff8b Fix: Only create large stack size if enough memory
Small boxes do not have enough memory to create a large stack

Conversely we want a large stack size for large boxes with a very highly
nested directory structure.

Version: New version
2022-08-31 21:14:56 +01:00
andy.boot d6f9bb3c47 Feature: Add min-size parameter
Add often requested feature. '--min-size 50000' will only include files
above a size of 50kB
2022-08-23 11:47:18 +01:00
andy.boot b9b2aee760 Cleanup: Clean previous commit.
Dislike the idea of passing a string into build_cli. By removing
a call to default_value we can side-step the problem.

Downside is we lose the error log if a user provides a bad depth
2022-08-23 09:12:07 +01:00
Jedsek f60184ecbb Fix the hard code of max depth 2022-08-23 09:11:13 +01:00
Jedsek 81d52e6e3a Support for completions 2022-08-23 09:11:13 +01:00
andy.boot 5980858b39 Feature: Config file
Read flags for several params from config file.

This was a popular requested feature (many people want to run with -r on
by default).
2022-08-22 12:05:04 +01:00
andy.boot 4cef6aaa84 Refactor: init_color function
Refactor function so windows & linux are forced to have same signature
instead of 2 different functions
2022-08-20 11:09:56 +01:00
andy.boot dc5b7b2c2e Comment: Update comment text 2022-08-20 11:09:56 +01:00
andy.boot fc548919c5 Refactor: Move filter by file type to new file 2022-08-20 11:09:56 +01:00
andy.boot 2a9d545c3c Style: Remove ColorState enum, revert init_color
Booleans are simpler and easier to work with.

Revert init_color to its earlier state as it is easier to understand
2022-08-20 11:09:56 +01:00
Nathan West 5fcc45efbe Use correct error code type 2022-08-20 10:50:46 +01:00
Nathan West c36ca33fe9 Lots of code cleanup
- Try to use iterator adapters and collect in various places, where possible. This especially benefits draw_it.
- Try to use `.map` and other similar methods on Options and Results, where possible
- Replaced nearly all clones with reference-based equivalents
- Summarizing nodes by file extension is now much more efficient
- PartialOrd and PartialEq implementations now agree
- Replace #[cfg(...)] function definitions with simpler if cfg!(...) equivelents
- Simplify CLI Values handling by taking advantage of Values::default
- Various spelling corrections in comments
- Add `ColorState` enum to replace bool, for clarity
- Fix tests that break under some detected terminal widths when paths are long
- Use sort_by instead of (sort, reverse)
- Use new `ExtensionNode` struct internally to simplify extension aggregation code
2022-08-20 10:50:46 +01:00
andy.boot 812e1e3c53 Feature: Add skip-total flag
Flag to not include the last line containing totals of the output tree
2022-08-18 15:22:10 +01:00
andy.boot b9386cd39e Fix: Increase Stack size
Low stack size could result in a stack overflow exception if traversing
very highly nested directories.

This makes core-dumps less likely but will not completely remove the
risk

example for creating directories:
mkdir -p $(for i in {1..5000}; do echo -n "qwe/"; done)

original issue:
https://github.com/bootandy/dust/issues/197
2022-08-15 14:05:24 +01:00
andy.boot a00d1f0719 Fix: Allow -n to be used with -d
Allow -n for number_of_lines to be used with -d 'max depth'

Remove depth specific functions, the job is now handled by the mainline

Add depth as a field onto the Node object.
2022-07-13 09:38:21 +01:00
andy.boot 52aeeebe1f Improve help text 2022-02-26 11:47:06 +00:00
andy.boot 9f4a5daee6 Update library: Clap
Required several changes to main.rs as v3 had breaking changes.
2022-02-26 11:10:26 +00:00
andy.boot 20d89bef91 Neaten code 2022-02-26 09:58:47 +00:00
andy.boot 109a0b90d4 Update help text: number_of_lines
Remove note about 'height' and '-h being help' because it confused
people.

Add text to explain default height is terminal height - 10
https://github.com/bootandy/dust/issues/201
2022-01-02 22:41:02 +00:00
andy.boot ab67c1a50e Update help text: Add note for -c about watch
Issue was raised about using dust with watch. The solution is to use
watch --color dust or watch dust -c

https://github.com/bootandy/dust/issues/205
2022-01-02 22:41:02 +00:00
Gustavobb f708305190 Feature: Implement ISO output 2021-11-20 12:13:30 +00:00
andy.boot d983175189 Cleanup: Vec -> &[]. Remove println. 2021-10-24 14:05:14 +01:00
andy.boot fa4405b58b Cleanup: Remove unused comment
This was fixed a few commits ago
2021-10-24 14:05:14 +01:00
andy.boot 9f91d446c1 Feature/Bugfix: Allow multiple regexs to be used
The -e and -v flags allow multiple values. Before values after the first
were ignored. This change allows the user to specify multiple regexs and
have them all applied.
2021-10-24 14:05:14 +01:00
andy.boot 1cb731533b bugfix: Allow dust to work on low width terminal
Do not assume the min width is 80 (unless on windows).
2021-09-19 11:40:21 +01:00
andy.boot d6c2482150 Clap: use default_value on input
This avoids uses one less 'match' statement
2021-09-19 11:12:23 +01:00
andy.boot 9d2e6d2b36 Feature: Filter by invert_filter: reverse match
Mimic grep's -v option.

Allows dust to only match files that do not match the given filter
2021-09-19 11:12:23 +01:00
andy.boot 124c19b5c9 Feature: Adding file types filter & F flag changed
-t = Show summary of types

-e = Filter by regex
	allows you to specify a file type like -e "\.txt$"

Change behaviour of '-f' flag - it now counts only files. Before it
counted files & directories. This was needed for compatibility with
the new '-e' filter flag
2021-09-19 11:12:23 +01:00