Metadata-Version: 2.4
Name: bdapt
Version: 0.2.0a1
Summary: A cli tool for grouping and managing multiple APT packages as bundles on Debian-based systems.
Project-URL: Homepage, https://github.com/deltazefiro/bdapt
Project-URL: Repository, https://github.com/deltazefiro/bdapt
Project-URL: Issues, https://github.com/deltazefiro/bdapt/issues
Project-URL: Changelog, https://github.com/deltazefiro/bdapt/releases
Author-email: deltazefiro <deltazefiro@gmail.com>
License: GPL-3.0-or-later
Keywords: apt,bundle,debian,dependencies,metapackage,package-manager,ubuntu
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Requires-Dist: pydantic
Requires-Dist: rich
Requires-Dist: typer
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: isort; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Description-Content-Type: text/markdown

# bdapt: Bundle APT<br><sub><sup>Manage multiple Debian / Ubuntu APT packages as bundles</sup></sub>

**bdapt** (Bundle APT) is a command-line tool for managing collections of [APT packages](https://en.wikipedia.org/wiki/APT_(software)) as "bundles" on Debian-based systems (e.g. Ubuntu, Debian, etc.). It lets you install, remove, and track related packages together with a single command.

When software is installed from source or outside your package manager, dependencies often have to be installed manually using `apt install`. Later, when you remove the software, these dependencies remain because `apt autoremove` only removes packages marked as "automatically installed." Over time, this leads to clutter and orphaned packages. **bdapt** solves this by grouping dependencies into bundles, making cleanup straightforward.

> [!WARNING]  
> This project is currently in an early development stage and **not production ready**. Breaking changes and data loss are expected. Use at your own risk.

## Installation

You can install bdapt using pip:

```bash
pip install bdapt
```

Or if you prefer [uv](https://github.com/astral-sh/uv):

```bash
uv tool install bdapt
```

## Quickstart

Let's say you're setting up a server for a web application. You need Nginx, PostgreSQL, and Redis.

#### Create bundle

```bash
bdapt new web-stack nginx postgresql redis -d "Core web services stack"
```

#### Add packages

Your application now requires PHP. Instead of installing it manually, add it to your bundle.

```bash
bdapt add web-stack php-fpm php-pgsql
```

#### Remove packages

You've decided to move Redis to a different server and no longer need it locally.

```bash
bdapt rm web-stack redis
```

#### Remove bundle

You are decommissioning the server and want to clean up everything.

```bash
bdapt del web-stack
```

Now your system is clean!

## Usage

```plaintext                                                     
 Usage: bdapt [OPTIONS] COMMAND [ARGS]...

 Bundle APT: Group multiple Debian APT packages as bundles.

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version                       Show version and exit                                                                                    │
│ --quiet               -q        Minimal output                                                                                           │
│ --non-interactive     -y        Skip all confirmation prompts                                                                            │
│ --install-completion            Install completion for the current shell.                                                                │
│ --show-completion               Show completion for the current shell, to copy it or customize the installation.                         │
│ --help                          Show this message and exit.                                                                              │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ new    Create and install new bundle.                                                                                                    │
│ add    Add packages to a bundle.                                                                                                         │
│ rm     Remove packages from a bundle.                                                                                                    │
│ del    Delete the bundle.                                                                                                                │
│ ls     List all bundles.                                                                                                                 │
│ show   Display bundle contents.                                                                                                          │
│ sync   Force reinstall bundle to match definition.                                                                                       │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
```
