bloatr 0.1.0__tar.gz
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.
- bloatr-0.1.0/.gitignore +8 -0
- bloatr-0.1.0/Makefile +19 -0
- bloatr-0.1.0/PKG-INFO +131 -0
- bloatr-0.1.0/README.md +118 -0
- bloatr-0.1.0/pyproject.toml +35 -0
- bloatr-0.1.0/src/bloatr/__init__.py +1 -0
- bloatr-0.1.0/src/bloatr/__main__.py +3 -0
- bloatr-0.1.0/src/bloatr/app.py +509 -0
- bloatr-0.1.0/src/bloatr/cleaner.py +216 -0
- bloatr-0.1.0/src/bloatr/cli.py +122 -0
- bloatr-0.1.0/src/bloatr/locations.py +70 -0
- bloatr-0.1.0/src/bloatr/models.py +72 -0
- bloatr-0.1.0/src/bloatr/scanner.py +145 -0
- bloatr-0.1.0/src/bloatr/sizes.py +80 -0
- bloatr-0.1.0/tests/__init__.py +0 -0
- bloatr-0.1.0/tests/test_cleaner.py +295 -0
- bloatr-0.1.0/tests/test_locations.py +118 -0
- bloatr-0.1.0/tests/test_scanner.py +183 -0
- bloatr-0.1.0/tests/test_sizes.py +70 -0
bloatr-0.1.0/.gitignore
ADDED
bloatr-0.1.0/Makefile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.PHONY: install test run build publish clean
|
|
2
|
+
|
|
3
|
+
install:
|
|
4
|
+
pip install -e ".[dev]" 2>/dev/null || pip install -e . && pip install pytest pytest-cov
|
|
5
|
+
|
|
6
|
+
test:
|
|
7
|
+
pytest tests/ -v --cov=bloatr --cov-report=term-missing
|
|
8
|
+
|
|
9
|
+
run:
|
|
10
|
+
python -m bloatr
|
|
11
|
+
|
|
12
|
+
build:
|
|
13
|
+
python -m build
|
|
14
|
+
|
|
15
|
+
publish:
|
|
16
|
+
python -m twine upload dist/*
|
|
17
|
+
|
|
18
|
+
clean:
|
|
19
|
+
rm -rf dist/ build/ *.egg-info src/*.egg-info .pytest_cache __pycache__
|
bloatr-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bloatr
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Kill your Mac's bloat. Select. Delete. Done.
|
|
5
|
+
Project-URL: Homepage, https://github.com/suhasdinesh/bloatr
|
|
6
|
+
Project-URL: Repository, https://github.com/suhasdinesh/bloatr
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/suhasdinesh/bloatr/issues
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: cleanup,developer,disk,macos,storage
|
|
10
|
+
Requires-Python: >=3.11
|
|
11
|
+
Requires-Dist: textual>=0.60
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# bloatr
|
|
15
|
+
|
|
16
|
+
> Kill your Mac's bloat. Select. Delete. Done.
|
|
17
|
+
|
|
18
|
+
A dead-simple macOS CLI that finds your biggest developer cache directories, lets you browse them, and deletes what you don't need — with a clean terminal UI.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
SIZE LOCATION
|
|
22
|
+
24.3 GB ▶ ~/Library/Developer/Xcode/DerivedData
|
|
23
|
+
11.2 GB ~/Library/Caches
|
|
24
|
+
4.1 GB ~/Library/Android/sdk
|
|
25
|
+
3.1 GB ~/.expo
|
|
26
|
+
1.9 GB ~/.gradle/caches
|
|
27
|
+
515 MB ~/.npm
|
|
28
|
+
|
|
29
|
+
space:select enter:explore esc:back d:delete q:quit
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pipx install bloatr
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or with pip:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install bloatr
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Launch interactive TUI (scans known developer bloat locations)
|
|
52
|
+
bloatr
|
|
53
|
+
|
|
54
|
+
# Scan any directory — like `du` but interactive
|
|
55
|
+
bloatr ~/
|
|
56
|
+
bloatr ~/Documents
|
|
57
|
+
bloatr ~/Library/Caches
|
|
58
|
+
|
|
59
|
+
# Preview what would be deleted (safe mode)
|
|
60
|
+
bloatr --dry-run
|
|
61
|
+
|
|
62
|
+
# Only show items > 1 GB
|
|
63
|
+
bloatr --min-size 1G
|
|
64
|
+
|
|
65
|
+
# JSON output (pipe-friendly)
|
|
66
|
+
bloatr --json
|
|
67
|
+
bloatr --json ~/Library | jq '.[].size_human'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## What it scans
|
|
73
|
+
|
|
74
|
+
| Location | What it is |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `~/Library/Developer/Xcode/DerivedData` | Xcode build artifacts |
|
|
77
|
+
| `~/Library/Developer/Xcode/Archives` | Xcode app archives |
|
|
78
|
+
| `~/Library/Developer/CoreSimulator/Runtimes` | iOS/watchOS simulator runtimes |
|
|
79
|
+
| `~/Library/Developer/Xcode/iOS DeviceSupport` | Per-device debug symbols |
|
|
80
|
+
| `~/Library/Caches` | App caches |
|
|
81
|
+
| `~/.gradle/caches` | Gradle build cache |
|
|
82
|
+
| `~/.npm` | npm package cache |
|
|
83
|
+
| `~/.yarn/cache` | Yarn package cache |
|
|
84
|
+
| `~/.pnpm-store` | pnpm content-addressable store |
|
|
85
|
+
| `~/.cocoapods/repos` | CocoaPods spec repos |
|
|
86
|
+
| `~/.cargo/registry` | Rust crate registry |
|
|
87
|
+
| `~/.cargo/git` | Rust git dependencies |
|
|
88
|
+
| `~/.pub-cache` | Flutter/Dart package cache |
|
|
89
|
+
| `~/go/pkg/mod` | Go module cache |
|
|
90
|
+
| `~/.expo` | Expo/React Native cache |
|
|
91
|
+
| `~/Library/Android/sdk` | Android SDK |
|
|
92
|
+
| `~/Library/Application Support/JetBrains` | JetBrains IDE caches |
|
|
93
|
+
| Homebrew cache | `brew --cache` output |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Keyboard shortcuts
|
|
98
|
+
|
|
99
|
+
| Key | Action |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `j` / `↓` | Move down |
|
|
102
|
+
| `k` / `↑` | Move up |
|
|
103
|
+
| `space` | Toggle select |
|
|
104
|
+
| `enter` | Drill into folder |
|
|
105
|
+
| `esc` / `backspace` | Go back |
|
|
106
|
+
| `d` | Delete selected items |
|
|
107
|
+
| `r` | Rescan from scratch |
|
|
108
|
+
| `q` | Quit |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Safety
|
|
113
|
+
|
|
114
|
+
bloatr will **never** delete:
|
|
115
|
+
- Anything outside your home directory (`~`)
|
|
116
|
+
- Top-level protected directories (`~/Library`, `~/Documents`, `~/Desktop`, etc.)
|
|
117
|
+
- The home directory itself
|
|
118
|
+
|
|
119
|
+
Every deletion requires an explicit confirmation prompt. Use `--dry-run` to preview without touching anything.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Credits
|
|
124
|
+
|
|
125
|
+
Idea and direction by a human who lost 100 GB to Mac bloat one too many times. Code written entirely by [Claude Code](https://claude.ai/code).
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
MIT
|
bloatr-0.1.0/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# bloatr
|
|
2
|
+
|
|
3
|
+
> Kill your Mac's bloat. Select. Delete. Done.
|
|
4
|
+
|
|
5
|
+
A dead-simple macOS CLI that finds your biggest developer cache directories, lets you browse them, and deletes what you don't need — with a clean terminal UI.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
SIZE LOCATION
|
|
9
|
+
24.3 GB ▶ ~/Library/Developer/Xcode/DerivedData
|
|
10
|
+
11.2 GB ~/Library/Caches
|
|
11
|
+
4.1 GB ~/Library/Android/sdk
|
|
12
|
+
3.1 GB ~/.expo
|
|
13
|
+
1.9 GB ~/.gradle/caches
|
|
14
|
+
515 MB ~/.npm
|
|
15
|
+
|
|
16
|
+
space:select enter:explore esc:back d:delete q:quit
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pipx install bloatr
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or with pip:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install bloatr
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Launch interactive TUI (scans known developer bloat locations)
|
|
39
|
+
bloatr
|
|
40
|
+
|
|
41
|
+
# Scan any directory — like `du` but interactive
|
|
42
|
+
bloatr ~/
|
|
43
|
+
bloatr ~/Documents
|
|
44
|
+
bloatr ~/Library/Caches
|
|
45
|
+
|
|
46
|
+
# Preview what would be deleted (safe mode)
|
|
47
|
+
bloatr --dry-run
|
|
48
|
+
|
|
49
|
+
# Only show items > 1 GB
|
|
50
|
+
bloatr --min-size 1G
|
|
51
|
+
|
|
52
|
+
# JSON output (pipe-friendly)
|
|
53
|
+
bloatr --json
|
|
54
|
+
bloatr --json ~/Library | jq '.[].size_human'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## What it scans
|
|
60
|
+
|
|
61
|
+
| Location | What it is |
|
|
62
|
+
|---|---|
|
|
63
|
+
| `~/Library/Developer/Xcode/DerivedData` | Xcode build artifacts |
|
|
64
|
+
| `~/Library/Developer/Xcode/Archives` | Xcode app archives |
|
|
65
|
+
| `~/Library/Developer/CoreSimulator/Runtimes` | iOS/watchOS simulator runtimes |
|
|
66
|
+
| `~/Library/Developer/Xcode/iOS DeviceSupport` | Per-device debug symbols |
|
|
67
|
+
| `~/Library/Caches` | App caches |
|
|
68
|
+
| `~/.gradle/caches` | Gradle build cache |
|
|
69
|
+
| `~/.npm` | npm package cache |
|
|
70
|
+
| `~/.yarn/cache` | Yarn package cache |
|
|
71
|
+
| `~/.pnpm-store` | pnpm content-addressable store |
|
|
72
|
+
| `~/.cocoapods/repos` | CocoaPods spec repos |
|
|
73
|
+
| `~/.cargo/registry` | Rust crate registry |
|
|
74
|
+
| `~/.cargo/git` | Rust git dependencies |
|
|
75
|
+
| `~/.pub-cache` | Flutter/Dart package cache |
|
|
76
|
+
| `~/go/pkg/mod` | Go module cache |
|
|
77
|
+
| `~/.expo` | Expo/React Native cache |
|
|
78
|
+
| `~/Library/Android/sdk` | Android SDK |
|
|
79
|
+
| `~/Library/Application Support/JetBrains` | JetBrains IDE caches |
|
|
80
|
+
| Homebrew cache | `brew --cache` output |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Keyboard shortcuts
|
|
85
|
+
|
|
86
|
+
| Key | Action |
|
|
87
|
+
|---|---|
|
|
88
|
+
| `j` / `↓` | Move down |
|
|
89
|
+
| `k` / `↑` | Move up |
|
|
90
|
+
| `space` | Toggle select |
|
|
91
|
+
| `enter` | Drill into folder |
|
|
92
|
+
| `esc` / `backspace` | Go back |
|
|
93
|
+
| `d` | Delete selected items |
|
|
94
|
+
| `r` | Rescan from scratch |
|
|
95
|
+
| `q` | Quit |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Safety
|
|
100
|
+
|
|
101
|
+
bloatr will **never** delete:
|
|
102
|
+
- Anything outside your home directory (`~`)
|
|
103
|
+
- Top-level protected directories (`~/Library`, `~/Documents`, `~/Desktop`, etc.)
|
|
104
|
+
- The home directory itself
|
|
105
|
+
|
|
106
|
+
Every deletion requires an explicit confirmation prompt. Use `--dry-run` to preview without touching anything.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Credits
|
|
111
|
+
|
|
112
|
+
Idea and direction by a human who lost 100 GB to Mac bloat one too many times. Code written entirely by [Claude Code](https://claude.ai/code).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "bloatr"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Kill your Mac's bloat. Select. Delete. Done."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
keywords = ["macos", "disk", "cleanup", "developer", "storage"]
|
|
13
|
+
dependencies = [
|
|
14
|
+
"textual>=0.60",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.scripts]
|
|
18
|
+
bloatr = "bloatr.cli:main"
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Homepage = "https://github.com/suhasdinesh/bloatr"
|
|
22
|
+
Repository = "https://github.com/suhasdinesh/bloatr"
|
|
23
|
+
"Bug Tracker" = "https://github.com/suhasdinesh/bloatr/issues"
|
|
24
|
+
|
|
25
|
+
[tool.hatch.build.targets.wheel]
|
|
26
|
+
packages = ["src/bloatr"]
|
|
27
|
+
|
|
28
|
+
[tool.pytest.ini_options]
|
|
29
|
+
testpaths = ["tests"]
|
|
30
|
+
|
|
31
|
+
[dependency-groups]
|
|
32
|
+
dev = [
|
|
33
|
+
"pytest>=8.0",
|
|
34
|
+
"pytest-cov>=5.0",
|
|
35
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|