reclaimed 0.1.2__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.
- reclaimed-0.1.2/.gitignore +82 -0
- reclaimed-0.1.2/CONTRIBUTING.md +112 -0
- reclaimed-0.1.2/LICENSE +29 -0
- reclaimed-0.1.2/PKG-INFO +163 -0
- reclaimed-0.1.2/README.md +105 -0
- reclaimed-0.1.2/__init__.py +0 -0
- reclaimed-0.1.2/implementation_plan.md +241 -0
- reclaimed-0.1.2/model=anthropic/claude-3-7-sonnet-20250219 +0 -0
- reclaimed-0.1.2/model=anthropic/trim_whitespace.py +98 -0
- reclaimed-0.1.2/pyproject.toml +96 -0
- reclaimed-0.1.2/reclaim_performance_analysis.md +265 -0
- reclaimed-0.1.2/reclaimed/__init__.py +34 -0
- reclaimed-0.1.2/reclaimed/__main__.py +6 -0
- reclaimed-0.1.2/reclaimed/_version.py +3 -0
- reclaimed-0.1.2/reclaimed/cli.py +153 -0
- reclaimed-0.1.2/reclaimed/core/__init__.py +24 -0
- reclaimed-0.1.2/reclaimed/core/cache.py +145 -0
- reclaimed-0.1.2/reclaimed/core/errors.py +55 -0
- reclaimed-0.1.2/reclaimed/core/scanner.py +504 -0
- reclaimed-0.1.2/reclaimed/core/types.py +50 -0
- reclaimed-0.1.2/reclaimed/io/__init__.py +5 -0
- reclaimed-0.1.2/reclaimed/io/filesystem.py +206 -0
- reclaimed-0.1.2/reclaimed/metrics/__init__.py +141 -0
- reclaimed-0.1.2/reclaimed/metrics/buffer.py +222 -0
- reclaimed-0.1.2/reclaimed/metrics/collector.py +222 -0
- reclaimed-0.1.2/reclaimed/metrics/publisher.py +229 -0
- reclaimed-0.1.2/reclaimed/metrics/subscriber.py +186 -0
- reclaimed-0.1.2/reclaimed/metrics/types.py +124 -0
- reclaimed-0.1.2/reclaimed/metrics/utils.py +208 -0
- reclaimed-0.1.2/reclaimed/ui/__init__.py +46 -0
- reclaimed-0.1.2/reclaimed/ui/formatters.py +158 -0
- reclaimed-0.1.2/reclaimed/ui/styles.py +249 -0
- reclaimed-0.1.2/reclaimed/ui/textual_app.py +701 -0
- reclaimed-0.1.2/reclaimed/utils/__init__.py +5 -0
- reclaimed-0.1.2/reclaimed/utils/formatters.py +103 -0
- reclaimed-0.1.2/reclaimed/utils/whitespace.py +156 -0
- reclaimed-0.1.2/requirements.txt +6 -0
- reclaimed-0.1.2/setup.py +3 -0
- reclaimed-0.1.2/tests/conftest.py +75 -0
- reclaimed-0.1.2/tests/test_core/test_scanner.py +147 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
.aider*
|
|
2
|
+
# Byte-compiled / optimized / DLL files
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.py[cod]
|
|
5
|
+
*$py.class
|
|
6
|
+
|
|
7
|
+
# Distribution / packaging
|
|
8
|
+
.Python
|
|
9
|
+
build/
|
|
10
|
+
develop-eggs/
|
|
11
|
+
dist/
|
|
12
|
+
downloads/
|
|
13
|
+
eggs/
|
|
14
|
+
.eggs/
|
|
15
|
+
lib/
|
|
16
|
+
lib64/
|
|
17
|
+
parts/
|
|
18
|
+
sdist/
|
|
19
|
+
var/
|
|
20
|
+
wheels/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
.installed.cfg
|
|
23
|
+
*.egg
|
|
24
|
+
MANIFEST
|
|
25
|
+
|
|
26
|
+
# PyInstaller
|
|
27
|
+
*.manifest
|
|
28
|
+
*.spec
|
|
29
|
+
|
|
30
|
+
# Installer logs
|
|
31
|
+
pip-log.txt
|
|
32
|
+
pip-delete-this-directory.txt
|
|
33
|
+
|
|
34
|
+
# Unit test / coverage reports
|
|
35
|
+
htmlcov/
|
|
36
|
+
.tox/
|
|
37
|
+
.nox/
|
|
38
|
+
.coverage
|
|
39
|
+
.coverage.*
|
|
40
|
+
.cache
|
|
41
|
+
nosetests.xml
|
|
42
|
+
coverage.xml
|
|
43
|
+
*.cover
|
|
44
|
+
*.py,cover
|
|
45
|
+
.hypothesis/
|
|
46
|
+
.pytest_cache/
|
|
47
|
+
|
|
48
|
+
# Environments
|
|
49
|
+
.env
|
|
50
|
+
.venv
|
|
51
|
+
env/
|
|
52
|
+
venv/
|
|
53
|
+
ENV/
|
|
54
|
+
env.bak/
|
|
55
|
+
venv.bak/
|
|
56
|
+
|
|
57
|
+
# Editor directories and files
|
|
58
|
+
.idea/
|
|
59
|
+
.vscode/
|
|
60
|
+
*.suo
|
|
61
|
+
*.ntvs*
|
|
62
|
+
*.njsproj
|
|
63
|
+
*.sln
|
|
64
|
+
*.sw?
|
|
65
|
+
|
|
66
|
+
# Textual specific
|
|
67
|
+
*.log
|
|
68
|
+
*.sqlite
|
|
69
|
+
|
|
70
|
+
# macOS
|
|
71
|
+
.DS_Store
|
|
72
|
+
|
|
73
|
+
# mypy
|
|
74
|
+
.mypy_cache/
|
|
75
|
+
.dmypy.json
|
|
76
|
+
dmypy.json
|
|
77
|
+
|
|
78
|
+
# Black
|
|
79
|
+
.blackd
|
|
80
|
+
|
|
81
|
+
# Hatch
|
|
82
|
+
.hatch/
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Contributing to Reclaim
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to Reclaim! This document provides guidelines and instructions for contributing.
|
|
4
|
+
|
|
5
|
+
## Development Setup
|
|
6
|
+
|
|
7
|
+
1. Fork and clone the repository:
|
|
8
|
+
```bash
|
|
9
|
+
git clone https://github.com/yourusername/reclaim.git
|
|
10
|
+
cd reclaim
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Install dependencies:
|
|
14
|
+
```bash
|
|
15
|
+
pip install -r requirements.txt
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
3. Create a development environment:
|
|
19
|
+
```bash
|
|
20
|
+
hatch shell
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Development Workflow
|
|
24
|
+
|
|
25
|
+
1. Create a new branch for your feature:
|
|
26
|
+
```bash
|
|
27
|
+
git checkout -b feature-name
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. Make your changes and ensure all tests pass:
|
|
31
|
+
```bash
|
|
32
|
+
hatch run test
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
3. Run the full test suite with coverage:
|
|
36
|
+
```bash
|
|
37
|
+
hatch run test-cov
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
4. Run linting checks:
|
|
41
|
+
```bash
|
|
42
|
+
hatch run lint
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
5. Commit your changes:
|
|
46
|
+
```bash
|
|
47
|
+
git add .
|
|
48
|
+
git commit -m "Description of changes"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
6. Push to your fork:
|
|
52
|
+
```bash
|
|
53
|
+
git push origin feature-name
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
7. Open a Pull Request
|
|
57
|
+
|
|
58
|
+
## Code Style
|
|
59
|
+
|
|
60
|
+
- We use Black for code formatting
|
|
61
|
+
- Ruff for linting
|
|
62
|
+
- MyPy for type checking
|
|
63
|
+
- All code must be type-annotated
|
|
64
|
+
- Maximum line length is 100 characters
|
|
65
|
+
- Follow PEP 8 guidelines
|
|
66
|
+
|
|
67
|
+
## Testing
|
|
68
|
+
|
|
69
|
+
- Write tests for all new features
|
|
70
|
+
- Maintain or improve code coverage
|
|
71
|
+
- Tests should be clear and meaningful
|
|
72
|
+
- Use pytest fixtures when appropriate
|
|
73
|
+
|
|
74
|
+
## Commit Messages
|
|
75
|
+
|
|
76
|
+
- Use clear, descriptive commit messages
|
|
77
|
+
- Start with a verb in the present tense
|
|
78
|
+
- Keep the first line under 50 characters
|
|
79
|
+
- Add details in the commit body if needed
|
|
80
|
+
|
|
81
|
+
## Pull Requests
|
|
82
|
+
|
|
83
|
+
- Reference any related issues
|
|
84
|
+
- Include a clear description of changes
|
|
85
|
+
- Update documentation if needed
|
|
86
|
+
- Ensure all checks pass
|
|
87
|
+
- Keep changes focused and atomic
|
|
88
|
+
|
|
89
|
+
## Release Process
|
|
90
|
+
|
|
91
|
+
Releases are automated through GitHub Actions when tags are pushed:
|
|
92
|
+
|
|
93
|
+
1. Ensure all tests pass on main
|
|
94
|
+
2. Tag the release:
|
|
95
|
+
```bash
|
|
96
|
+
git tag -a v0.1.0 -m "Release v0.1.0"
|
|
97
|
+
```
|
|
98
|
+
3. Push tags:
|
|
99
|
+
```bash
|
|
100
|
+
git push --tags
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The GitHub Action will automatically:
|
|
104
|
+
- Run all tests
|
|
105
|
+
- Build the package
|
|
106
|
+
- Publish to PyPI
|
|
107
|
+
|
|
108
|
+
## Questions?
|
|
109
|
+
|
|
110
|
+
Feel free to open an issue for any questions or concerns.
|
|
111
|
+
|
|
112
|
+
Thank you for contributing to Reclaim! 🌟
|
reclaimed-0.1.2/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
<<<<<<< HEAD
|
|
4
|
+
Copyright (c) 2024 Your Name
|
|
5
|
+
=======
|
|
6
|
+
Copyright (c) 2025 Taylor Wilsdon
|
|
7
|
+
>>>>>>> 949812349e7e407e382e45959969bb3abdba5af4
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
<<<<<<< HEAD
|
|
17
|
+
The above copyright notice and permission notice shall be included in all
|
|
18
|
+
=======
|
|
19
|
+
The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
>>>>>>> 949812349e7e407e382e45959969bb3abdba5af4
|
|
21
|
+
copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
SOFTWARE.
|
reclaimed-0.1.2/PKG-INFO
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reclaimed
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: A powerful disk usage analyzer with iCloud support
|
|
5
|
+
Project-URL: Homepage, https://github.com/taylorwilsdon/reclaimed
|
|
6
|
+
Project-URL: Repository, https://github.com/taylorwilsdon/reclaimed.git
|
|
7
|
+
Project-URL: Issues, https://github.com/taylorwilsdon/reclaimed/issues
|
|
8
|
+
Author-email: Taylor Wilsdon <taylor@taylorwilsdon.com>
|
|
9
|
+
License: MIT License
|
|
10
|
+
|
|
11
|
+
<<<<<<< HEAD
|
|
12
|
+
Copyright (c) 2024 Your Name
|
|
13
|
+
=======
|
|
14
|
+
Copyright (c) 2025 Taylor Wilsdon
|
|
15
|
+
>>>>>>> 949812349e7e407e382e45959969bb3abdba5af4
|
|
16
|
+
|
|
17
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
19
|
+
in the Software without restriction, including without limitation the rights
|
|
20
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
21
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
22
|
+
furnished to do so, subject to the following conditions:
|
|
23
|
+
|
|
24
|
+
<<<<<<< HEAD
|
|
25
|
+
The above copyright notice and permission notice shall be included in all
|
|
26
|
+
=======
|
|
27
|
+
The above copyright notice and this permission notice shall be included in all
|
|
28
|
+
>>>>>>> 949812349e7e407e382e45959969bb3abdba5af4
|
|
29
|
+
copies or substantial portions of the Software.
|
|
30
|
+
|
|
31
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
+
SOFTWARE.
|
|
38
|
+
License-File: LICENSE
|
|
39
|
+
Keywords: analyzer,cli,disk,icloud,storage
|
|
40
|
+
Classifier: Development Status :: 4 - Beta
|
|
41
|
+
Classifier: Environment :: Console
|
|
42
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
43
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
44
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
45
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
46
|
+
Classifier: Programming Language :: Python :: 3
|
|
47
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
48
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
49
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
50
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
51
|
+
Classifier: Topic :: System :: Systems Administration
|
|
52
|
+
Classifier: Topic :: Utilities
|
|
53
|
+
Requires-Python: >=3.8
|
|
54
|
+
Requires-Dist: click>=8.0.0
|
|
55
|
+
Requires-Dist: rich>=10.0.0
|
|
56
|
+
Requires-Dist: textual>=0.10.0
|
|
57
|
+
Description-Content-Type: text/markdown
|
|
58
|
+
|
|
59
|
+
# reclaimed 🌟
|
|
60
|
+
|
|
61
|
+
A powerful and user-friendly command-line tool for analyzing disk usage, with special handling for iCloud storage on macOS. Quickly find your largest files and directories with a beautiful, color-coded interface. I let aider write the README.md boilerplate and it's all accurate but I'm still not sure how we feel about the emojis... it seems Claude is a colorful gentleman when writing markdown.
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
<img width="898" alt="image" src="https://github.com/user-attachments/assets/b8c87581-978b-46e4-bf8b-d9e9b2cd5f9b" />
|
|
66
|
+
|
|
67
|
+
## Features
|
|
68
|
+
|
|
69
|
+
- 🚀 Fast recursive directory scanning, legitimately performant and batches progress updates efficently
|
|
70
|
+
- ☁️ Smart detection of iCloud vs local storage which is nice on the macbook
|
|
71
|
+
- 📊 She pretty (it utilizes the [Textualize/rich](https://github.com/Textualize/rich) library for fancy CLI stylings)
|
|
72
|
+
- 💾 Export results to JSON for further analysis or batch operations
|
|
73
|
+
- ⚡️ Real-time progress indication actually great
|
|
74
|
+
- 🛡️ Graceful handling of permission issues, doesn't freeze like the old diskinventoryx
|
|
75
|
+
|
|
76
|
+
## Installation
|
|
77
|
+
|
|
78
|
+
### Prerequisites
|
|
79
|
+
|
|
80
|
+
- Python 3.8 or higher
|
|
81
|
+
- pip (Python package installer)
|
|
82
|
+
- Technically not a venv but if you aren't using a venv you're generally doing python wrong
|
|
83
|
+
|
|
84
|
+
### Using pip
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
pip install reclaimed
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### From Source
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
git clone https://github.com/taylorwilsdon/reclaimed.git
|
|
94
|
+
cd reclaimed
|
|
95
|
+
pip install -r requirements.txt
|
|
96
|
+
hatch shell
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Usage
|
|
100
|
+
|
|
101
|
+
Basic usage:
|
|
102
|
+
```bash
|
|
103
|
+
reclaimed ~/Documents
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Advanced options:
|
|
107
|
+
```bash
|
|
108
|
+
# Show more results
|
|
109
|
+
reclaimed ~/Documents --files 20 --dirs 15
|
|
110
|
+
|
|
111
|
+
# Save results to JSON
|
|
112
|
+
reclaimed ~/Documents --output results.json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Options
|
|
116
|
+
|
|
117
|
+
- `PATH`: Directory to scan (default: current directory)
|
|
118
|
+
- `-f, --files N`: Number of largest files to show (default: 10)
|
|
119
|
+
- `-d, --dirs N`: Number of largest directories to show (default: 10)
|
|
120
|
+
- `-o, --output FILE`: Save results to JSON file
|
|
121
|
+
|
|
122
|
+
## Output
|
|
123
|
+
|
|
124
|
+
The tool provides:
|
|
125
|
+
- A real-time progress indicator showing files scanned and total size
|
|
126
|
+
- Two tables showing the largest files and directories
|
|
127
|
+
- Clear indication of iCloud vs local storage
|
|
128
|
+
- Summary of any access issues encountered
|
|
129
|
+
|
|
130
|
+
## Development
|
|
131
|
+
|
|
132
|
+
This project uses [Hatch](https://hatch.pypa.io/) for development workflow management.
|
|
133
|
+
|
|
134
|
+
### Setup Development Environment
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
pip install -r requirements.txt
|
|
138
|
+
hatch shell
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Common Commands
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Run tests
|
|
145
|
+
hatch run test
|
|
146
|
+
|
|
147
|
+
# Run tests with coverage
|
|
148
|
+
hatch run test-cov
|
|
149
|
+
|
|
150
|
+
# Run linting (black, ruff, mypy)
|
|
151
|
+
hatch run lint
|
|
152
|
+
|
|
153
|
+
# Build distribution packages
|
|
154
|
+
hatch build
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Contributing
|
|
158
|
+
|
|
159
|
+
Contributions are welcome! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# reclaimed 🌟
|
|
2
|
+
|
|
3
|
+
A powerful and user-friendly command-line tool for analyzing disk usage, with special handling for iCloud storage on macOS. Quickly find your largest files and directories with a beautiful, color-coded interface. I let aider write the README.md boilerplate and it's all accurate but I'm still not sure how we feel about the emojis... it seems Claude is a colorful gentleman when writing markdown.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
<img width="898" alt="image" src="https://github.com/user-attachments/assets/b8c87581-978b-46e4-bf8b-d9e9b2cd5f9b" />
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- 🚀 Fast recursive directory scanning, legitimately performant and batches progress updates efficently
|
|
12
|
+
- ☁️ Smart detection of iCloud vs local storage which is nice on the macbook
|
|
13
|
+
- 📊 She pretty (it utilizes the [Textualize/rich](https://github.com/Textualize/rich) library for fancy CLI stylings)
|
|
14
|
+
- 💾 Export results to JSON for further analysis or batch operations
|
|
15
|
+
- ⚡️ Real-time progress indication actually great
|
|
16
|
+
- 🛡️ Graceful handling of permission issues, doesn't freeze like the old diskinventoryx
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
### Prerequisites
|
|
21
|
+
|
|
22
|
+
- Python 3.8 or higher
|
|
23
|
+
- pip (Python package installer)
|
|
24
|
+
- Technically not a venv but if you aren't using a venv you're generally doing python wrong
|
|
25
|
+
|
|
26
|
+
### Using pip
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install reclaimed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### From Source
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git clone https://github.com/taylorwilsdon/reclaimed.git
|
|
36
|
+
cd reclaimed
|
|
37
|
+
pip install -r requirements.txt
|
|
38
|
+
hatch shell
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
Basic usage:
|
|
44
|
+
```bash
|
|
45
|
+
reclaimed ~/Documents
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Advanced options:
|
|
49
|
+
```bash
|
|
50
|
+
# Show more results
|
|
51
|
+
reclaimed ~/Documents --files 20 --dirs 15
|
|
52
|
+
|
|
53
|
+
# Save results to JSON
|
|
54
|
+
reclaimed ~/Documents --output results.json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Options
|
|
58
|
+
|
|
59
|
+
- `PATH`: Directory to scan (default: current directory)
|
|
60
|
+
- `-f, --files N`: Number of largest files to show (default: 10)
|
|
61
|
+
- `-d, --dirs N`: Number of largest directories to show (default: 10)
|
|
62
|
+
- `-o, --output FILE`: Save results to JSON file
|
|
63
|
+
|
|
64
|
+
## Output
|
|
65
|
+
|
|
66
|
+
The tool provides:
|
|
67
|
+
- A real-time progress indicator showing files scanned and total size
|
|
68
|
+
- Two tables showing the largest files and directories
|
|
69
|
+
- Clear indication of iCloud vs local storage
|
|
70
|
+
- Summary of any access issues encountered
|
|
71
|
+
|
|
72
|
+
## Development
|
|
73
|
+
|
|
74
|
+
This project uses [Hatch](https://hatch.pypa.io/) for development workflow management.
|
|
75
|
+
|
|
76
|
+
### Setup Development Environment
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pip install -r requirements.txt
|
|
80
|
+
hatch shell
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Common Commands
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Run tests
|
|
87
|
+
hatch run test
|
|
88
|
+
|
|
89
|
+
# Run tests with coverage
|
|
90
|
+
hatch run test-cov
|
|
91
|
+
|
|
92
|
+
# Run linting (black, ruff, mypy)
|
|
93
|
+
hatch run lint
|
|
94
|
+
|
|
95
|
+
# Build distribution packages
|
|
96
|
+
hatch build
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Contributing
|
|
100
|
+
|
|
101
|
+
Contributions are welcome! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
|
|
102
|
+
|
|
103
|
+
## License
|
|
104
|
+
|
|
105
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
File without changes
|