# Kondo ๐งน
Cleans `node_modules`, `target`, `build`, and friends from your projects.
Excellent if
- ๐พ You want to back up your code but don't want to include GBs of dependencies
- ๐งโ๐จ You try out lots of projects but hate how much space they occupy
- โก๏ธ You like keeping your disks lean and zippy
20+ Supported Project Types
Cargo (Rust),
CMake (C, C++),
Composer (PHP),
Elixir,
Godot 4.x (C#, GDScript)
Gradle (Java)
Jupyter Notebook (Python),
Maven (Java),
Node (JavaScript)
Pub (Dart),
Python
SBT (Scala),
Stack (Haskell),
Swift
Unity (C#),
Unreal Engine (C++),
Zig,
.NET (C#, F#)
CLI Video
[kondo-cli.webm](https://user-images.githubusercontent.com/2771466/222949617-0ed621bc-ac4e-495a-9165-036a3a597d34.webm)
GUI Video
[kondo-ui.webm](https://user-images.githubusercontent.com/2771466/222951044-13484711-6107-45d4-aaa3-3140bbbba898.webm)
## Installation
> **Warning**
>
> Kondo is [_essentially_](https://github.com/tbillington/kondo/blob/a7af95484d364bbb12eb3b40b0d860424dd1b714/kondo-lib/src/lib.rs#L236) `rm -rf` with a prompt. Use at your own discretion. Always have a backup of your projects.
### Command Line
**Homebrew**
```sh
brew install kondo
```
**Arch Linux**
```sh
pacman -S kondo
```
**Source**
Requires [rust](https://www.rust-lang.org/tools/install).
```sh
git clone https://github.com/tbillington/kondo.git
cargo install --path kondo/kondo
```
**Others**
Binaries available on the [releases page](https://github.com/tbillington/kondo/releases).
### Graphic User Interface
**Arch Linux**
```sh
pacman -S kondo-ui
```
**Source**
Requires [rust](https://www.rust-lang.org/tools/install). You may need [platform specific dependencies on linux](https://github.com/xi-editor/druid#platform-notes).
```sh
git clone https://github.com/tbillington/kondo.git
cargo install --path kondo/kondo-ui
```
Binaries available on the [releases page](https://github.com/tbillington/kondo/releases).
## Usage
> **Warning**
>
> Kondo is [_essentially_](https://github.com/tbillington/kondo/blob/a7af95484d364bbb12eb3b40b0d860424dd1b714/kondo-lib/src/lib.rs#L236) `rm -rf` with a prompt. Use at your own discretion. Always have a backup of your projects.
### Command Line Interface
Running `kondo` without a directory specified will run in the current directory.
```sh
kondo
```
Supplying a path will tell `kondo` where to start. Multiple paths are supported.
```sh
kondo code/my_project code/my_project_2
```
Passing a time will filter projects to those that haven't been modified for at least the specified period. See `kondo --help` for the full list of options.
```sh
kondo --older 3M # only projects with last modified greater than 3 months
kondo -o3M # shorthand
```
More options such as quiet mode, following symlinks, and filesystem restriction are viewable with `kondo --help`.
## Building/Development
To build the cli `kondo` you can run `cargo build` and `cargo run` from the projects root directory.
To build the gui `kondo-ui` you must first navigate into the `kondo-ui` directory, then you can run `cargo build` and `cargo run`.
The output binaries will be located in `target/debug/` or `target/release/` per [Cargo](https://doc.rust-lang.org/cargo/index.html) defaults.
## Similar Projects
- [The Tin Summer](https://github.com/vmchale/tin-summer)
- [Detox](https://github.com/whitfin/detox)
- [Sweep](https://github.com/woubuc/sweep)
- [npkill](https://github.com/voidcosmos/npkill)
- [Cargo Cleanall](https://github.com/LeSnake04/cargo-cleanall)
- [Cargo Sweep](https://github.com/holmgr/cargo-sweep)
- [Cargo Wipe](https://github.com/mihai-dinculescu/cargo-wipe)
- [cargo-clean-recursive](https://github.com/IgaguriMK/cargo-clean-recursive)