Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Option (CLI and Config) to "collapse" output about children of certain directories #452

Open
edbrannin opened this issue Dec 5, 2024 · 0 comments

Comments

@edbrannin
Copy link

edbrannin commented Dec 5, 2024

Sometimes there's a directory whose size I want to see, but whose children I don't care about.

Examples:

  • .git
    • (I almost never care about what's inside here, but knowing "This project's .git repo is 80% of the whole directory" would be helpful)
  • node_modules
    • (Maybe I want to rm -rf node_modules in a stale project, but I usually don't care which dependencies are big)
  • target in Maven projects
    • (Maybe I want to run mvn clean in some projects I haven't touched in months)
  • .next/cache as seen below

It would be heopful if I could set a list of directories to keep collapsed in the config file, rather than building up an alias[1] in my .zshrc

[1] Something like: alias dust=dust --collapse=.git --collapse=node_nodules --collapse=target --collapse=.next/cache

Example output where this would be helpful:

bruno % dust
 63M           ┌── lib                             │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M         ┌─┴ typescript                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M       ┌─┴ node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ┌─┴ bruno-query                           │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 63M     │     ┌── lib                             │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │   ┌─┴ typescript                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │ ┌─┴ node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ├─┴ bruno-common                          │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 63M     │     ┌── lib                             │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │   ┌─┴ typescript                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │ ┌─┴ node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ├─┴ bruno-graphql-docs                    │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 36M     │         ┌── _app.js                     │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   2%
 58M     │       ┌─┴ pages                         │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
 64M     │     ┌─┴ chunks                          │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
 66M     │   ┌─┴ static                            │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
 38M     │   │   ┌── server-development            │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   2%
 36M     │   │   │ ┌── 6.pack                      │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   2%
 36M     │   │   │ ├── 15.pack                     │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   2%
 83M     │   │   │ ├── 10.pack                     │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   4%
 84M     │   │   │ ├── 9.pack                      │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   4%
147M     │   │   │ ├── 8.pack                      │█████▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   7%
406M     │   │   ├─┴ client-development            │██████████████▓▓▓░░░░░░░                                          │  20%
444M     │   │ ┌─┴ webpack                         │███████████████▓▓░░░░░░░                                          │  22%
444M     │   ├─┴ cache                             │███████████████▓▓░░░░░░░                                          │  22%
518M     │ ┌─┴ .next                               │█████████████████░░░░░░░                                          │  26%
520M     ├─┴ bruno-app                             │█████████████████░░░░░░░                                          │  26%
717M   ┌─┴ packages                                │████████████████████████                                          │  36%
 21M   │   ┌── lib                                 │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 21M   │ ┌─┴ typescript                            │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 23M   │ │   ┌── dist                              │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 24M   │ │ ┌─┴ faker                               │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 24M   │ ├─┴ @faker-js                             │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 24M   │ ├── date-fns                              │█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 31M   │ │   ┌── Release                           │██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 31M   │ │ ┌─┴ build                               │██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 32M   │ ├─┴ canvas                                │██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 35M   │ ├── pdfjs-dist                            │██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 36M   │ │     ┌── dist                            │██▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 36M   │ │   ┌─┴ icons-react                       │██▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 80M   │ │ ┌─┴ icons                               │███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   4%
 80M   │ ├─┴ @tabler                               │███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   4%
 64M   │ │   ┌── compiled                          │███▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   3%
 99M   │ │ ┌─┴ dist                                │████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   5%
100M   │ ├─┴ next                                  │████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   5%
111M   │ │   ┌── next-swc.darwin-x64.node          │████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   6%
111M   │ │ ┌─┴ swc-darwin-x64                      │████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   6%
111M   │ ├─┴ @next                                 │████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   6%
 37M   │ │ ┌── mac                                 │██▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   2%
 22M   │ │ │   ┌── app-builder.exe                 │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 22M   │ │ │ ┌─┴ ia32                              │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 22M   │ │ │ │ ┌── app-builder.exe                 │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 22M   │ │ │ ├─┴ arm64                             │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 23M   │ │ │ │ ┌── app-builder.exe                 │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 23M   │ │ │ ├─┴ x64                               │█▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   1%
 68M   │ │ ├─┴ win                                 │███▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   3%
101M   │ │ ├── linux                               │████▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   5%
206M   │ ├─┴ app-builder-bin                       │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  10%
 54M   │ │               ┌── Resources             │██▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   3%
162M   │ │               ├── Electron Framework    │██████▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │   8%
232M   │ │             ┌─┴ A                       │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
232M   │ │           ┌─┴ Versions                  │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
232M   │ │         ┌─┴ Electron Framework.framework│████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
233M   │ │       ┌─┴ Frameworks                    │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
233M   │ │     ┌─┴ Contents                        │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
233M   │ │   ┌─┴ Electron.app                      │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
242M   │ │ ┌─┴ dist                                │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
245M   │ ├─┴ electron                              │████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                         │  12%
1.2G   ├─┴ node_modules                            │█████████████████████████████████████████                         │  63%
2.0G ┌─┴ .                                         │█████████████████████████████████████████████████████████████████ │ 100%

Desired result (absent whatever else would show up above these lines):

# mockup, not real program output
bruno % dust --collapse=node_modules --collapse=.next/cache
 64M       ┌── node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ┌─┴ bruno-query                           │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │ ┌── node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ├─┴ bruno-common                          │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     │ ┌── node_modules                        │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 64M     ├─┴ bruno-graphql-docs                    │███░░░░░░░░░░░░░░░░░░░░░                                          │   3%
 36M     │         ┌── _app.js                     │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   2%
 58M     │       ┌─┴ pages                         │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
 64M     │     ┌─┴ chunks                          │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
 66M     │   ┌─┴ static                            │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░                                          │   3%
444M     │   ├── cache                             │███████████████▓▓░░░░░░░                                          │  22%
518M     │ ┌─┴ .next                               │█████████████████░░░░░░░                                          │  26%
520M     ├─┴ bruno-app                             │█████████████████░░░░░░░                                          │  26%
717M   ┌─┴ packages                                │████████████████████████                                          │  36%
1.2G   ├── node_modules                            │█████████████████████████████████████████                         │  63%
2.0G ┌─┴ .                                         │█████████████████████████████████████████████████████████████████ │ 100%

The closest I can get right now is ignoring the directory with -X node_modules, but that completely removes it from the sizes shown: (See also #453)

bruno % dust -X node_modules
 16M       ┌── pack                       │██░                                                                        │   2%
 17M     ┌─┴ objects                      │██░                                                                        │   2%
 20M   ┌─┴ .git                           │███                                                                        │   3%
 10M   │         ┌── typescript.js        │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 10M   │         ├── typescriptServices.js│██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │         ├── tsserverlibrary.js   │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │         ├── tsserver.js          │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   2%
 63M   │       ┌─┴ lib                    │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │     ┌─┴ typescript               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │   ┌─┴ node_modules               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ ┌─┴ bruno-query                  │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 10M   │ │       ┌── typescript.js        │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 10M   │ │       ├── typescriptServices.js│██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │ │       ├── tsserverlibrary.js   │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │ │       ├── tsserver.js          │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   2%
 63M   │ │     ┌─┴ lib                    │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ │   ┌─┴ typescript               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ │ ┌─┴ node_modules               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ ├─┴ bruno-common                 │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 10M   │ │       ┌── typescript.js        │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 10M   │ │       ├── typescriptServices.js│██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │ │       ├── tsserverlibrary.js   │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   1%
 11M   │ │       ├── tsserver.js          │██▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   2%
 63M   │ │     ┌─┴ lib                    │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ │   ┌─┴ typescript               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ │ ┌─┴ node_modules               │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 64M   │ ├─┴ bruno-graphql-docs           │███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   │   9%
 21M   │ │         ┌── index.js           │███▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   3%
 36M   │ │         ├── _app.js            │████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   5%
 58M   │ │       ┌─┴ pages                │██████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   8%
 64M   │ │     ┌─┴ chunks                 │███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   9%
 66M   │ │   ┌─┴ static                   │███████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   9%
 15M   │ │   │     ┌── 13.pack            │██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   2%
 38M   │ │   │   ┌─┴ server-development   │████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   5%
 36M   │ │   │   │ ┌── 6.pack             │████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   5%
 36M   │ │   │   │ ├── 15.pack            │████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │   5%
 83M   │ │   │   │ ├── 10.pack            │█████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  11%
 84M   │ │   │   │ ├── 9.pack             │█████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  11%
147M   │ │   │   │ ├── 8.pack             │███████████████▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  20%
406M   │ │   │   ├─┴ client-development   │█████████████████████████████████████████▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  55%
444M   │ │   │ ┌─┴ webpack                │█████████████████████████████████████████████▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  60%
444M   │ │   ├─┴ cache                    │█████████████████████████████████████████████▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░   │  60%
518M   │ │ ┌─┴ .next                      │████████████████████████████████████████████████████▒░░░░░░░░░░░░░░░░░░░   │  70%
520M   │ ├─┴ bruno-app                    │█████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░   │  70%
717M   ├─┴ packages                       │████████████████████████████████████████████████████████████████████████   │  97%
740M ┌─┴ .                                │██████████████████████████████████████████████████████████████████████████ │ 100%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant