dev-prune 1.17.0 → 1.18.0
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.
- package/README.md +16 -6
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ gigabytes hostage for a build you are not running.
|
|
|
28
28
|
|
|
29
29
|
`dev-prune` finds those directories across every Git repository you register, and deletes
|
|
30
30
|
them — but only after proving the exact command that puts them back would succeed. It
|
|
31
|
-
knows twenty-
|
|
31
|
+
knows twenty-five package managers, not just the obvious four: Composer, Bundler, Mix,
|
|
32
32
|
CocoaPods and Terraform are as first-class as npm and pip. It is a single Rust binary,
|
|
33
33
|
installs its own background schedule, and answers to two names: `dev-prune` and `devp`.
|
|
34
34
|
|
|
@@ -91,6 +91,11 @@ All three download the prebuilt binary for your platform, verify its published S
|
|
|
91
91
|
put it on `PATH`, and run `dev-prune setup`. Pass `--no-auto-setup` / `-NoAutoSetup` to
|
|
92
92
|
skip that last step.
|
|
93
93
|
|
|
94
|
+
A binary you download and run by hand asks first instead: the first attended run opens
|
|
95
|
+
the settings walkthrough before anything is installed, finishing it is the yes, and
|
|
96
|
+
quitting it means nothing is installed — durably, until you say otherwise with
|
|
97
|
+
`devp setup`.
|
|
98
|
+
|
|
94
99
|
Re-run any of them whenever you like. An install that is already current, complete and on
|
|
95
100
|
`PATH` is left exactly as it is and exits `0` without downloading; an older one is updated
|
|
96
101
|
in place; a newer one is not downgraded. `--force` / `-Force` writes it again regardless.
|
|
@@ -593,7 +598,7 @@ process that leaves a dirty working tree is a surprise.
|
|
|
593
598
|
| 🐳 **Container report** | `devp caches docker` (also `podman`, `nerdctl`, `finch`, Apple's `container`, or `containers` for all of them plus local Kubernetes clusters) breaks a container engine's disk into images, containers, local volumes and build cache, each with what the engine itself calls reclaimable, and prints the prune commands narrowest first with what each takes with it. `devp caches clear docker` then runs the narrow ones for you, after asking, and counts them in `devp stats` — **never a volume**, and never from a scheduler or a hook. `devp caches` carries a one-line summary per engine, outside its own total |
|
|
594
599
|
| 📊 **Cache report** | `devp caches` sizes every package manager cache and store on the machine — npm to cargo to conda, Maven, Gradle, NuGet, vcpkg, Conan, Composer, CocoaPods, Hex, Bundler, pub, SwiftPM, Terraform, Poetry, PDM and Deno — and prints the command that clears each. It also finds the stores that belong to no package manager at all and are routinely the largest things in the list: the Playwright and Puppeteer browser bundles, the Cypress binary cache, the Electron and electron-builder download caches, and the HuggingFace hub — a whole browser or model per version, and nothing ever removes the old one. The report is read-only; `devp caches clear <manager>` runs that command for you, after asking. `devp config set cache_max_gb default=10` says how big is too big — for every manager at once, or per manager with `default=10,npm=4` — and marks the ones past it — `devp caches clear --over-cap all` then empties exactly those, still only when you type it. Each manager also says how many of your registered repositories use it and what that works out to per repository, and `devp caches clear --unused all` empties the ones nothing uses at all. pnpm is reported once per filesystem, because a store it hardlinks into `node_modules` cannot cross one and projects kept off the system disk get a store of their own. Nothing on a schedule ever touches a cache, and Maven's `~/.m2/repository` is never cleared at all — it holds artifacts `mvn install:install-file` put there that no remote can hand back |
|
|
595
600
|
| 🩺 **`devp doctor`** | One read-only pass that ends by naming the *single* reason a repository would or would not be pruned. Runs no package manager, repairs nothing, safe to run twice. `devp doctor --fix` then mends what it found — installed-but-broken only |
|
|
596
|
-
| 🤖 **Self-installing automation** | OS-native scheduler (Task Scheduler, LaunchAgent, systemd user timer) and non-blocking Git hooks, installed
|
|
601
|
+
| 🤖 **Self-installing automation** | OS-native scheduler (Task Scheduler, LaunchAgent, systemd user timer) and non-blocking Git hooks, installed once the first run’s walkthrough is accepted (quitting it installs nothing) and restored after an upgrade. `auto_setup`, `auto_hooks`, `auto_daemon` or `DEV_PRUNE_NO_AUTO_SETUP=1` turn it off |
|
|
597
602
|
| ⚡ **0ms opt-out** | An `ignore.devprune.json` in a repository root is honoured by file presence alone — no read, no parse. It applies at registration as well: a bulk scan (`devp init`, and the scheduled pass's own discovery) will not register a repository that holds it, so a repository can decline before it ever reaches `devp status`. `devp link <path>` still registers one, because naming a single repository is not a bulk scan |
|
|
598
603
|
| 🔌 **`--json` on every reporting command** | `run`, `status`, `stats`, `trust` and `caches` each emit one versioned document on stdout, diagnostics on stderr. Built for scripts and agents |
|
|
599
604
|
| 🧠 **AI agent skill** | A token-lean `SKILL.md` embedded in the binary; `devp skill` exports it and prints onboarding prompts for Claude Code, Gemini Antigravity, Cursor, Windsurf, Copilot and OpenClaw, and the repository doubles as a Claude Code plugin marketplace |
|
|
@@ -678,11 +683,11 @@ Adapters detect the project, verify the lockfile, and own the bloat directories:
|
|
|
678
683
|
A required binary that is missing is a reason to skip, never a reason to delete: if `npm`
|
|
679
684
|
is not on `PATH`, the `node_modules` it owns is left exactly where it is.
|
|
680
685
|
|
|
681
|
-
The
|
|
686
|
+
The nine build-tool adapters ship **disabled**, because a build tree is regenerated
|
|
682
687
|
by recompiling, not downloading — it costs more to get back. `devp config set
|
|
683
688
|
enable_cargo true` / `enable_gradle true` / `enable_maven true` / `enable_swift true` /
|
|
684
689
|
`enable_dart true` / `enable_mix_build true` / `enable_vcpkg true` /
|
|
685
|
-
`enable_cmake_build true` switches them on, and their candidates wait for
|
|
690
|
+
`enable_cmake_build true` / `enable_dotnet_build true` switches them on, and their candidates wait for
|
|
686
691
|
`build_idle_days` (45 by default), applied as the *maximum* of it and `idle_days` — the
|
|
687
692
|
build-tool gate only ever makes pruning later, never earlier.
|
|
688
693
|
|
|
@@ -792,7 +797,7 @@ once on a first install — so the defaults are something you agreed to rather t
|
|
|
792
797
|
inherited — and again after an upgrade adds a setting you have never been shown.
|
|
793
798
|
|
|
794
799
|
If you already know what you want, `devp config recommended` is the one-command version:
|
|
795
|
-
it turns on the
|
|
800
|
+
it turns on the nine adapters and build trees that are off by default because they are
|
|
796
801
|
not universally wanted, and leaves `allow_manifest_rewrite` — the one recommendation
|
|
797
802
|
that edits files Git tracks — named, explained and off unless you add
|
|
798
803
|
`--with-cautious`. `devp config show` lists whatever you have not taken yet.
|
|
@@ -830,7 +835,7 @@ rather than downloading. That is the whole reason each one is a switch.
|
|
|
830
835
|
|
|
831
836
|
| Key | Default | Meaning |
|
|
832
837
|
| :--- | :---: | :--- |
|
|
833
|
-
| `enable_cargo` … `
|
|
838
|
+
| `enable_cargo` … `enable_dotnet_build` | `false` | Turn on an opt-in build-tool adapter; `build_idle_days` (`45`) gates all nine |
|
|
834
839
|
|
|
835
840
|
**Shared download caches** — one key, because the cap only ever marks.
|
|
836
841
|
|
|
@@ -978,6 +983,11 @@ non-blocking `post-commit`, `post-checkout` and `post-merge` Git hooks that regi
|
|
|
978
983
|
repositories as you visit them. Both are reinstated after an upgrade if anything went
|
|
979
984
|
missing.
|
|
980
985
|
|
|
986
|
+
None of it arrives unasked. A machine that has never agreed opens the settings
|
|
987
|
+
walkthrough on its first attended run, before anything is installed: finishing the
|
|
988
|
+
walkthrough is the yes, quitting it is a durable no, and `devp setup` changes the
|
|
989
|
+
answer whenever you like.
|
|
990
|
+
|
|
981
991
|
```bash
|
|
982
992
|
devp setup --status # what is installed, what is not, and why
|
|
983
993
|
devp config set auto_setup false # stop the unattended pass entirely
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev-prune",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "Universal, lockfile-safe workspace pruner. Reclaims disk space from idle Git repositories by deleting only dependency and build directories a lockfile can rebuild.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"dev-prune": "./bin/dev-prune.js",
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
"LICENSE.md"
|
|
13
13
|
],
|
|
14
14
|
"optionalDependencies": {
|
|
15
|
-
"dev-prune-darwin-arm64": "1.
|
|
16
|
-
"dev-prune-darwin-x64": "1.
|
|
17
|
-
"dev-prune-linux-arm64": "1.
|
|
18
|
-
"dev-prune-linux-x64": "1.
|
|
19
|
-
"dev-prune-windows-arm64": "1.
|
|
20
|
-
"dev-prune-windows-x64": "1.
|
|
21
|
-
"dev-prune-windows-x86": "1.
|
|
15
|
+
"dev-prune-darwin-arm64": "1.18.0",
|
|
16
|
+
"dev-prune-darwin-x64": "1.18.0",
|
|
17
|
+
"dev-prune-linux-arm64": "1.18.0",
|
|
18
|
+
"dev-prune-linux-x64": "1.18.0",
|
|
19
|
+
"dev-prune-windows-arm64": "1.18.0",
|
|
20
|
+
"dev-prune-windows-x64": "1.18.0",
|
|
21
|
+
"dev-prune-windows-x86": "1.18.0"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
24
|
"node": ">=20"
|