# Projclean [![CI](https://github.com/sigoden/projclean/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/projclean/actions/workflows/ci.yaml) [![Crates](https://img.shields.io/crates/v/projclean.svg)](https://crates.io/crates/projclean) Project dependencies & build artifacts cleanup tool. ![screenshot](https://github.com/sigoden/projclean/assets/4012553/82c28551-6d68-4e56-8565-f7aee1987723) ## Install ### With cargo ``` cargo install projclean ``` ### Binaries on macOS, Linux, Windows Download from [Github Releases](https://github.com/sigoden/projclean/releases), unzip and add projclean to your $PATH. ## CLI ``` Usage: projclean [OPTIONS] [RULES]... Arguments: [RULES]... Search rules, e.g. node_modules target@Cargo.toml Options: -C, --cwd Start searching from [default: .] -x, --exclude Exclude directories from search, e.g. ignore1,ignore2 -t, --time <[+|-]DAY> Path was last modified less than, more than or exactly days -s, --size <[+|-]SIZE> Path uses less than, more than or exactly units (K|M|G|T) of space -D, --delete-all Automatically delete all found targets -P, --print Print the found targets -h, --help Print help -V, --version Print version ``` Clean up node_modules. ```sh projclean node_modules ``` Clean up various types of projects. ```sh projclean node_modules target@Cargo.toml ``` Start searching from a specific directory with `-C` or `--cwd` ```sh projclean -C $HOME node_modules # equal to `cd $HOME && projclean node_modules` ``` Find node_modules with the latest updates over 30 days and occupy more than 1G disk space. ```sh projclean node_modules --time +30 --size +1G ``` ## Search Rule Projclean find targets according search rule. Rule consist of two parts: ``` [@detect[,detect...]] ``` | project | rule | | :------- | :-------------------------------------------- | | nodejs | `node_modules` | | cargo | `target@Cargo.toml` | | maven | `target@pom.xml` | | gradle | `.gradle,build@build.gradle,build.gradle.kts` | | cmake | `build@CMakeLists.txt` | | composer | `vendor@composer.json` | | dotnet | `bin,obj@*.csproj,*.fsproj` | | vs | `.vs,Debug,Release@*.sln` | | vc++ | `Debug,Release@*.vcxproj` | | swift | `.build,.swiftpm@Package.swift` | | pod | `Pods@Podfile` | | pub | `.dart_tool,build@pubspec.yaml` | | sbt | `target,project/target@build.sbt` | | jupyter | `.ipynb_checkpoints@*.ipynb` | | zig | `zig-cache,zig-out@build.zig` | | rebar | `_build@rebar.config` | | dune | `_build@dune-project` | | mix | `_build@mix.exs` | | stack | `.stack-work@stack.yaml` | | godot | `.godot@project.godot` | ## License Copyright (c) 2022-2024 projclean-developers. argc is made available under the terms of either the MIT License or the Apache License 2.0, at your option. See the LICENSE-APACHE and LICENSE-MIT files for license details.