Metadata-Version: 2.1
Name: packitup
Version: 1.0.1
Summary: A tool to generate project structure and contents as Markdown
Home-page: https://github.com/jamesfincher/packitup
Author: James Fincher
Author-email: james@fincher.dev
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Utilities
Requires-Python: >=3
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pyperclip
Requires-Dist: colorama
Requires-Dist: pyyaml
Requires-Dist: tqdm

# PackItUp

## 📦 Project Structure Generator and Documentation Tool

PackItUp is a powerful and flexible command-line tool designed to generate comprehensive documentation of your project's structure. It creates a detailed overview of your project's files and directories, making it easier to understand, share, and maintain your codebase.

## 🌟 Features

- 🌳 Generate project structure in tree format
- 📄 Include file contents (optional)
- 📊 Provide file metadata (size, last modified date, permissions)
- 🎨 Multiple output formats (Markdown, JSON, YAML)
- 🧹 Respect .gitignore patterns
- 🚫 Customizable file/directory exclusions
- 📦 Compress output (optional)
- 📏 Customizable file size limits
- 📋 Automatic clipboard copy of output

## 🛠 Installation

PackItUp is available on PyPI and can be installed with pip:

```
pip install packitup
```

This will install PackItUp and all its dependencies.

## 🚀 Usage

After installation, you can use PackItUp directly from the command line:

```
packitup [OPTIONS] [PATH]
```

If no path is specified, PackItUp will use the current directory.

### 🎛 Options

- `-t, --tree`: Generate file tree only (no file contents)
- `-l, --list`: List files and directories in the specified directory
- `-s, --singlefile`: Ignore file splitting and return as a single file
- `-p, --purge`: Purge all saved PackItUp data
- `-f, --format {markdown,json,yaml}`: Output format (default: markdown)
- `-m, --max-size BYTES`: Maximum file size in bytes (default: 5MB)
- `-c, --compress`: Compress the output files
- `-e, --exclude PATTERN [PATTERN ...]`: Additional patterns to exclude
- `--no-content`: Exclude file contents, only include metadata

## 📚 Examples

### 1. Basic Usage

Generate a Markdown report of the current directory:

```
packitup
```

This will create a Markdown file with the project structure, including file contents (up to 5MB per file) and metadata.

### 2. Specify a Different Directory

Generate a report for a specific project:

```
packitup /path/to/your/project
```

### 3. Generate Only the File Tree

To get a quick overview without file contents:

```
packitup -t
```

### 4. Change Output Format

Generate a JSON report:

```
packitup -f json
```

Or a YAML report:

```
packitup -f yaml
```

### 5. Customize File Size Limit

Set the maximum file size to 10MB:

```
packitup -m 10000000
```

### 6. Exclude Specific Patterns

Exclude all .log and .tmp files:

```
packitup -e *.log *.tmp
```

### 7. Generate a Compressed Output

Create a zip file containing the report:

```
packitup -c
```

### 8. Exclude File Contents

Generate a report with only metadata, no file contents:

```
packitup --no-content
```

### 9. Combine Multiple Options

Generate a compressed JSON report with a 10MB file size limit, excluding .log files and file contents:

```
packitup -f json -m 10000000 -c -e *.log --no-content
```

## 📂 Output

PackItUp generates its output in a new directory named `<project_name>_structure_<timestamp>`. The main output file will be in this directory, named `<project_name>_structure_<timestamp>.<format>`.

If the compress option is used, a zip file will be created in the same directory.

The generated content is automatically copied to your clipboard for easy sharing.

## 🧹 Cleaning Up

To remove all PackItUp generated data:

```
packitup -p
```

This will delete the `.packitup` directory in your home folder and any local output directories.

## 🔄 Updating

To update PackItUp to the latest version, use pip:

```
pip install --upgrade packitup
```

## 🐛 Troubleshooting

If you encounter any issues while using PackItUp, try the following:

1. Ensure you have the latest version installed.
2. Check that you have the necessary permissions to read the files and directories you're trying to document.
3. If you're having issues with specific file types, try using the `--no-content` option to exclude file contents.

If problems persist, please open an issue on our GitHub repository.

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request on our [GitHub repository](https://github.com/yourusername/packitup).

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](https://github.com/yourusername/packitup/blob/main/LICENSE) file for details.

## 🙏 Acknowledgements

- Thanks to all the open-source libraries that made this project possible.
- Special thanks to the Python community for their continuous support and inspiration.

---

Happy documenting! 📚✨
