Commit Graph

492 Commits

Author SHA1 Message Date
andy.boot
f546dbbede 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
2023-01-05 09:22:38 +00:00
andy.boot
a91aa62060 clippy: Fix new clippy 2023-01-04 20:08:20 +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
Phil Clifford
b478534b22 added deb-get as installation source 2022-10-24 23:25:13 +01: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
Collin Styles
0a67191054 Add a direct dependency on the atty crate 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
v0.8.3
2022-08-31 21:14:56 +01:00
Kian-Meng Ang
c148cd9044 Prettify md/yaml file
Resolved via `prettier --write .`
2022-08-24 08:59:30 +01:00
Kian-Meng Ang
2893f73f47 Fix typos
Found via `codespell -L crate`.
2022-08-24 08:55:00 +01:00
andy.boot
5103ebe0d8 Version: Increment version 2022-08-23 12:26:08 +01:00
andy.boot
40acc8f868 README: Update readme to include max-size 2022-08-23 11:47:18 +01:00
andy.boot
eebd9daf2a Feature: Add error message on bad min-size
Log to stderr if the min-size from either parameter or config is invalid
2022-08-23 11:47:18 +01:00
andy.boot
9bc1a6d625 Refactor: Tidy up use of UNITS: k,m,g,t 2022-08-23 11:47:18 +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
f70f4b7e12 CI: Only run against latest ubuntu builds
Copying lsd's CI which only builds against latest ubuntu releases.
2022-08-23 09:30:01 +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
ed6a8d0462 Revert tests
Revert symlink tests to their old form - No mix of arg and args & a
comment explaining why we need a large width.
2022-08-20 11:09:56 +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
d477145694 Tests refactor: Neaten test 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
cf5ebd76fe Refactor: Reintroduce local variable 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
4b4bca52d9 Rename variable
Better name, this represents the percent bars just 'percent' is vague
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
andy.boot
20cc5cf7e0 Clippy: Fix clippy 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
282f6d314d get_new_root no longer panics if there are 0 nodes 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
34ba99af2a Tests: Check stderr is empty in test_flags
For each test_flag test using the build_command helper method, check
that stderr is empty
2022-08-19 10:43:24 +01:00
andy.boot
2713445ad0 Fix: Permissions
Stop incorrect reporting of "Did not have permissions" this would
happen where dust is called with a file instead of a directory.

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

todo: add test
2022-08-19 10:43:24 +01:00
andy.boot
b62f35291d Fix: Remove first space char
Before we assumed 5 chars for printing the size of a node. This change
allows us to check if we need 5 chars or if we can manage with 4 which
may save us a character.

(1023B = 5 chars, 1.2K = 4 chars)

Note: Mac test runners create very long filenames in tmp directories. To
fix this we must either
1) Tell the terminal it has a very wide width
2) Duplicate the code to reduce the size of the filename (add .. at the
   end).

This commit changes from (2) to (1)
2022-08-19 10:41:59 +01:00
andy.boot
a7fbcb8156 Refactor: Simplify get_pretty_size
Remove the constant '5' used in format. Now all paths use
num_chars_needed_on_left_most instead.
2022-08-19 10:41:59 +01:00
andy.boot
a7120b949c Tests: Add test to verify skip-total flag 2022-08-18 15:22:10 +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
4eb3f29565 Tests: Predictable iteration order allows stricter
Now files are iterated thru in a preditermined order we can tighten the
boundaries of the test_hard_sym_link test.

Link will not be displayed, only the file name
2022-08-18 13:39:01 +01:00
andy.boot
d64092d8a1 Fix: Predictable iteration order
Sort the Node objects so that duplicate inodes appear in a predictable
order.

Include new sort_by_inode method because this is notably quicker than
sorting by size & name as defined in the nodes.rs file.
2022-08-18 13:16:09 +01:00
andy.boot
77750c8149 Update README.md 2022-08-18 13:15:05 +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
17112b09cc Clippy: Remove un-needed return 2022-08-15 12:26:47 +01:00
andy.boot
c5adff5348 Clippy: Remove un-needed return 2022-08-15 12:26:47 +01:00
somehowchris
ad2e52e211 perf: use lto, strip and codegen profile settings for perf opt 2022-08-15 11:56:46 +01:00
andy.boot
164bec71a3 Update libs 2022-07-14 09:42:45 +01:00
andy.boot
11b5c7227f New Version 2022-07-14 08:53:45 +01:00
andy.boot
fc70f9ba30 Rename variable 2022-07-13 09:38:21 +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