# Done
- [x] colorized output
- [x] option to print out top *n* values
- [x] default: order by "biggest"
- [x] set depth to which to recurse, but also have a flag for setting it
manually.
- [x] benchmark on e.g. cabal source code + build and compare to du + rg and/or
du + grep (+ sort)
- [x] "fat" files, but also efficient (lazy) sorting algorithm w/ min & max.
- [x] currently panics on symlinks, which is bad
- [x] output error messages to stderr
- [x] add tests
- [x] flag to print files
- [x] feature for bash completions
- [x] make threshhold accept number w/ M/G tag (nom).
- [x] test w/ non-ascii characters in filenames
- [x] non-ascii regex
- [x] travis ci
- [x] set threshholds even with `-n` flag
- [x] option to recognize what "artifacts" are most likely to look like, e.g. `.a` or
`.o` files and executable permissions.
- [x] allow `additional artifacts regex` flag
- [x] look in .gitignore
- [x] check executable permissions/binary file-ness
- [x] regex
- [x] strip out machinery for `with_gitignore` and `artifact_regex`
- [x] de/fr/bo translations would be nice
- [x] stabilize interface w/ at least --exclude for artifact
- [x] fix .gitignore parser
- [x] fix darcs parser
- [x] make a pun about the tin drum?
- [x] still use gitignore even w/ user-supplied regex
- [x] print by significant figures
- [x] `-d1` should work with `parallel`
- [x] flag to print all (e.g. no max depth/etc.)
- [x] excludes w/ regex
- [x] fix bugs w/ excludes & overzealous use of .gitignores
- [x] multiple included paths
- [x] let it run on a single file
- [x] don't call `is_project_dir()` three times
- [x] improve ergonomics (and speed) by guessing language of project
directory
- [x] subcommand to print files by default
- [x] organize the subcommands in a saner manner
- [x] threshold flag should apply to the whole thing, so `sn fat` should not
print main dir in such cases.
- [x] bug w/ `sort` & `-d0`.
- [x] when using `--all` with `ar`, it should not recurse arbitrarily far.
- [x] when `--all` is used with `sort`, it *should* recurse arbitrarily far.
- [x] and `sn ar --sort` as well (currently it just explodes)
# Bugs
- [ ] `sn p` on a file shouldn't hang indefinitely
- [x] `-j1` should work
# UI/Ergonomics
- [x] warn before cleaning home directory
- [ ] silent flag to ignore warnings?
- [ ] vim plugin
- [ ] symlinks!!
- [ ] flag to fail on nonrecoverable failures
- [ ] fail without breaking when we can.
- [ ] get block sizes not file lengths?
# Features
- [ ] make a `.deb` crate
- [ ] optionally remove docs for elm/Idris while cleaning
- [ ] parse Makefiles (clean)
- [ ] cool feature: highlight extensions
- [ ] color-coded by language?
- [ ] global gitignore
- [ ] check for ignore files in the parent dir too.
- [ ] ~/.darcs/boring
- [x] darcs boring file?
- [x] pijul ignore
- [ ] .hginore
- [x] regex should only match against file name, not full path
- [x] replace du
- [x] autoclean option
- [x] haskell
- [x] rust
- [xi idris
- [x] TeX
- [x] elm
- [x] python
- [ ] .deb should include completions and manpages.
# Tests
- [ ] test w/ actual file tree & `assert\_eq!()`
- [ ] test parsing of *all* ignore files
# Code maintenance
- [ ] make `read_all()` take a struct.
# Performance
- [ ] parity with du without threading
- [ ] print directories immediately rather than adding them to a vector?
MsQueue?
# Parallel traversals
- [ ] determine whether to use multiple threads automatically
- [ ] More intelligent concurrency (two levels down?)
- [x] feed results into a queue and pop them off in another thread
- [x] make generic structure for a traversal in parallel that respects necessary
features
- [ ] global ignores
- [ ] ignore files
- [ ] .ignore
- [ ] pijul .ignore
- [ ] darcs boring file
- [ ] .hginore
- [x] excludes
- [ ] look at rayon for globbed paths.
# French/German
- [ ] errors should be translated to french/german as well.
- [ ] make an error type & use that to organize things
- [x] change french/german binary name
- [ ] upsteam PR to clap-rs?
- [x] fix build.rs