cleard 1.0.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cleard
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Classifier: Development Status :: 4 - Beta
|
|
5
|
+
Classifier: Environment :: Console
|
|
6
|
+
Classifier: Intended Audience :: Developers
|
|
7
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
8
|
+
Classifier: Operating System :: OS Independent
|
|
9
|
+
Classifier: Programming Language :: Rust
|
|
10
|
+
Classifier: Topic :: Utilities
|
|
11
|
+
Summary: Interactive, multi-ecosystem build-artifact disk reclaimer (npkill, but for everything)
|
|
12
|
+
Keywords: cli,tui,disk,cleanup,node_modules
|
|
13
|
+
Home-Page: https://github.com/ervan0707/cleard
|
|
14
|
+
Author-email: ervan <ervan@softwareseni.com>
|
|
15
|
+
License: MIT
|
|
16
|
+
Requires-Python: >=3.7
|
|
17
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
18
|
+
Project-URL: Bug Reports, https://github.com/ervan0707/cleard/issues
|
|
19
|
+
Project-URL: Documentation, https://github.com/ervan0707/cleard#readme
|
|
20
|
+
Project-URL: Homepage, https://github.com/ervan0707/cleard
|
|
21
|
+
Project-URL: Repository, https://github.com/ervan0707/cleard
|
|
22
|
+
|
|
23
|
+
# cleard
|
|
24
|
+
|
|
25
|
+
`npkill`, but for **everything** — an interactive terminal tool that finds
|
|
26
|
+
regenerable build / dependency / cache directories across many ecosystems and
|
|
27
|
+
lets you delete them to reclaim disk space.
|
|
28
|
+
|
|
29
|
+
It recursively scans a directory, streams matches into a live list sorted by
|
|
30
|
+
size, and deletes the ones you pick — with a running total of space reclaimed.
|
|
31
|
+
|
|
32
|
+
## Why it's safe
|
|
33
|
+
|
|
34
|
+
Unlike a plain name match, `cleard` is **marker-aware**: an ambiguous directory
|
|
35
|
+
is only flagged when its project marker is a sibling. `target/` is only a
|
|
36
|
+
candidate when a `Cargo.toml` (or `pom.xml`) sits next to it; a hand-written
|
|
37
|
+
`build/` source folder with no build-system marker is left untouched.
|
|
38
|
+
Unambiguous names (`node_modules`, `__pycache__`, `.terraform`, …) need no marker.
|
|
39
|
+
|
|
40
|
+
Deletion is bounded to the scan root and always asks for confirmation.
|
|
41
|
+
|
|
42
|
+
## Supported out of the box
|
|
43
|
+
|
|
44
|
+
Node (`node_modules`, `.next`, `.nuxt`, `.svelte-kit`, `.turbo`), Rust (`target`),
|
|
45
|
+
Java/Gradle/Maven (`build`, `.gradle`, `target`), Python (`.venv`, `venv`,
|
|
46
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `*.egg-info`),
|
|
47
|
+
Go & PHP (`vendor`), .NET (`bin`, `obj`), CocoaPods (`Pods`), Terraform
|
|
48
|
+
(`.terraform`), Elixir (`_build`, `deps`), Elm (`elm-stuff`), Dart/Flutter
|
|
49
|
+
(`.dart_tool`). Extendable via config.
|
|
50
|
+
|
|
51
|
+
## Install
|
|
52
|
+
|
|
53
|
+
`cleard` ships one binary through whichever ecosystem you already use — npm,
|
|
54
|
+
PyPI, and the `curl` script all deliver the same prebuilt binary; Cargo and Nix
|
|
55
|
+
build from source.
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
cargo install cleard # crates.io (compiles from source)
|
|
59
|
+
npm install -g cleard # prebuilt binary via npm
|
|
60
|
+
pip install cleard # prebuilt binary in a Python wheel
|
|
61
|
+
curl -fsSL https://raw.githubusercontent.com/ervan0707/cleard/main/install.sh | bash
|
|
62
|
+
nix profile install github:ervan0707/cleard
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Run
|
|
66
|
+
|
|
67
|
+
With Nix flakes, run it straight from GitHub (nothing to clone, no Rust needed):
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
# run once against a directory
|
|
71
|
+
nix run github:ervan0707/cleard -- ~/code
|
|
72
|
+
|
|
73
|
+
# run the current directory
|
|
74
|
+
nix run github:ervan0707/cleard
|
|
75
|
+
|
|
76
|
+
# pin a tag/branch/commit
|
|
77
|
+
nix run github:ervan0707/cleard/v0.1.0 -- ~/code
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Install it into your profile:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
nix profile install github:ervan0707/cleard
|
|
84
|
+
cleard ~/code
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Binary cache (skip the build)
|
|
88
|
+
|
|
89
|
+
CI publishes prebuilt outputs to [Cachix](https://www.cachix.org), so you can
|
|
90
|
+
download the binary instead of compiling Rust. The flake advertises the cache
|
|
91
|
+
via `nixConfig`, which Nix uses automatically if you're a trusted user.
|
|
92
|
+
Otherwise, opt in once:
|
|
93
|
+
|
|
94
|
+
```sh
|
|
95
|
+
cachix use skinnyvans
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or add it to your Nix config by hand:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
substituters = https://skinnyvans.cachix.org
|
|
102
|
+
trusted-public-keys = skinnyvans.cachix.org-1:sgaZPgRhzsU4YScjc2U5Imc+4E3y9Ov/G/q8p/csX+o=
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Or add it to your own flake:
|
|
106
|
+
|
|
107
|
+
```nix
|
|
108
|
+
{
|
|
109
|
+
inputs.cleard.url = "github:ervan0707/cleard";
|
|
110
|
+
# then use cleard.packages.${system}.default in your outputs
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Don't have Nix? Build from source with Cargo:
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
git clone https://github.com/ervan0707/cleard
|
|
118
|
+
cd cleard
|
|
119
|
+
cargo build --release # binary at ./target/release/cleard
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Usage
|
|
123
|
+
|
|
124
|
+
```sh
|
|
125
|
+
cleard # scan the current directory
|
|
126
|
+
cleard ~/code # scan a specific directory
|
|
127
|
+
cleard --dry-run # show what would be reclaimed, delete nothing
|
|
128
|
+
cleard --min-size 100M # hide candidates smaller than 100 MiB
|
|
129
|
+
cleard -x .git -x dist # skip directories by name
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Keys
|
|
133
|
+
|
|
134
|
+
| Key | Action |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
| `↑`/`k`, `↓`/`j` | move cursor |
|
|
137
|
+
| `g` / `G` | top / bottom |
|
|
138
|
+
| `space` | toggle selection |
|
|
139
|
+
| `a` / `c` | select all / clear selection |
|
|
140
|
+
| `d` / `Del` | delete selected (or focused) |
|
|
141
|
+
| `Enter` | delete focused |
|
|
142
|
+
| `s` | cycle sort (size / age / path) |
|
|
143
|
+
| `/` | filter by path or ecosystem |
|
|
144
|
+
| `?` | help |
|
|
145
|
+
| `q` | quit |
|
|
146
|
+
|
|
147
|
+
## Config
|
|
148
|
+
|
|
149
|
+
Optional, at `~/.config/cleard/config.toml` (or pass `--config <path>`). Use it to
|
|
150
|
+
add your own detection rules, or to replace the built-in catalog entirely. If the
|
|
151
|
+
file doesn't exist, the built-in rules are used.
|
|
152
|
+
|
|
153
|
+
Each rule has:
|
|
154
|
+
|
|
155
|
+
- `ecosystem` — the label shown in the list.
|
|
156
|
+
- `dir_names` — directory names to match.
|
|
157
|
+
- `markers` — sibling files that must exist for a match. With markers, the dir is
|
|
158
|
+
only flagged when one sits next to it (so a hand-written `zig-out/` with no
|
|
159
|
+
`build.zig` is left alone). Omit `markers` to match the name anywhere ("safe by
|
|
160
|
+
name") — only do that for unambiguous names.
|
|
161
|
+
|
|
162
|
+
`dir_names` and `markers` accept a single `*` glob (e.g. `*.csproj`, `*.egg-info`).
|
|
163
|
+
Your rules are checked before the built-ins, so they win on overlapping names.
|
|
164
|
+
|
|
165
|
+
Add a few ecosystems on top of the built-ins:
|
|
166
|
+
|
|
167
|
+
```toml
|
|
168
|
+
# use_default_rules = true # default; keep the built-in catalog
|
|
169
|
+
|
|
170
|
+
[[rules]]
|
|
171
|
+
ecosystem = "Zig"
|
|
172
|
+
dir_names = ["zig-cache", "zig-out"]
|
|
173
|
+
markers = ["build.zig"]
|
|
174
|
+
|
|
175
|
+
[[rules]]
|
|
176
|
+
ecosystem = "Bazel"
|
|
177
|
+
dir_names = ["bazel-bin", "bazel-out", "bazel-testlogs"]
|
|
178
|
+
markers = ["WORKSPACE", "WORKSPACE.bazel", "MODULE.bazel"]
|
|
179
|
+
|
|
180
|
+
[[rules]]
|
|
181
|
+
ecosystem = "CMake"
|
|
182
|
+
dir_names = ["CMakeFiles"] # unambiguous name, no marker needed
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Or replace the built-ins entirely and clean only what you list:
|
|
186
|
+
|
|
187
|
+
```toml
|
|
188
|
+
use_default_rules = false
|
|
189
|
+
|
|
190
|
+
[[rules]]
|
|
191
|
+
ecosystem = "Node"
|
|
192
|
+
dir_names = ["node_modules"]
|
|
193
|
+
|
|
194
|
+
[[rules]]
|
|
195
|
+
ecosystem = "Rust"
|
|
196
|
+
dir_names = ["target"]
|
|
197
|
+
markers = ["Cargo.toml"]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Develop (Nix)
|
|
201
|
+
|
|
202
|
+
```sh
|
|
203
|
+
nix develop # dev shell with the pinned Rust toolchain + rust-analyzer
|
|
204
|
+
cargo run -- ./path
|
|
205
|
+
cargo test
|
|
206
|
+
|
|
207
|
+
nix build # build the release binary -> ./result/bin/cleard
|
|
208
|
+
nix run . -- ~/code # build and run
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
(With `direnv`, `direnv allow` loads the dev shell automatically.)
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT
|
|
216
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
cleard-1.0.0.data/scripts/cleard.exe,sha256=-nyOWdi9jzrSvKqRKPtBCBJM1XlKoUvUNXpBXd4C5Rk,1801216
|
|
2
|
+
cleard-1.0.0.dist-info/METADATA,sha256=y2OvXy0y79xCw8np4e3i4wzQYqVYPgWUr8nyQCRFFHc,6738
|
|
3
|
+
cleard-1.0.0.dist-info/WHEEL,sha256=2zDlIYIdD4m4N3p5DVEG3iJhGLdhsBQgdH-FqVkAur8,94
|
|
4
|
+
cleard-1.0.0.dist-info/sboms/cleard.cyclonedx.json,sha256=bejkOtcNDqrUeBf-nvXz39U0rjcJ9RLZqfR6EH2Ik3Y,210983
|
|
5
|
+
cleard-1.0.0.dist-info/RECORD,,
|