# Debby
Create .deb files easily using python package metadata
## Installation
You can install this package with pip.
```sh
$ pip install debby
```
## Links
[![Documentation](https://img.shields.io/badge/Documentation-C61C3E?style=for-the-badge&logo=Read+the+Docs&logoColor=%23FFFFFF)](https://abrahammurciano.github.io/debby)
[![Source Code - GitHub](https://img.shields.io/badge/Source_Code-GitHub-181717?style=for-the-badge&logo=GitHub&logoColor=%23FFFFFF)](https://github.com/abrahammurciano/debby.git)
[![PyPI - debby](https://img.shields.io/badge/PyPI-debby-006DAD?style=for-the-badge&logo=PyPI&logoColor=%23FFD242)](https://pypi.org/project/debby/)
## Usage
This tool creates the directory structure (including the control file) to then create a .deb package with `dpkg-deb`.
You may provide a template for the control file (see [Control File Template](#control-file-template)) or provide the metadata directly via the command line or environment variables.
You may also provide files to include in the package with `-f/--file` option, which may be passed multiple times.
You may also provide a source for the metadata (see [Metadata Sources](#metadata-sources)). You can also specify specific metadata values via the command line. If no metadata source is provided, and all the required metadata is not provided via the command line, an error will be raised.
```sh
OUT_DIR=$(debby -f path/to/binary /usr/bin/binary -f path/to/config /etc/config --pyproject pyproject.toml)
dpkg-deb --build $OUT_DIR
```
### Metadata Sources
Currently, the following metadata sources are supported:
- `--pyproject`: Reads the metadata from the given pyproject.toml file, according to the [PEP 621](https://peps.python.org/pep-0621/) specification.
- `--poetry`: Reads the metadata from the given pyproject.toml file, according to [Poetry](https://python-poetry.org/docs/pyproject/)'s specification.
### Control File Template
It is possible to provide a template for the control file with `-t/--template path/to/control.template`. If provided, this template will be used to generate the control file instead of creating one from scratch. The template should be a text file with the following allowed placeholders.
| Placeholder | Description | Examples |
| --- | --- | --- |
| `{meta.name}` | The [name](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-package) of the package | `debby` |
| `{meta.source}` | The [source](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-source) of the package | `debby` |
| `{meta.version}` | The [version](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version) of the package | `0.1.0` |
| `{meta.section}` | The [section](https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections) of the package | `misc`, `python` |
| `{meta.priority}` | The [priority](https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities) of the package | `optional` |
| `{meta.architecture}` | The [architecture](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-architecture) of the package | `all` |
| `{meta.eessential}` | The [essential](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-essential) status of the package | `yes`, `no` |
| `{meta.maintainer}` | The [maintainer](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-maintainer) of the package | `Abraham Murciano <abrahammurciano@gmail.com>` |
| `{meta.description}` | The [description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-description) of the package | `Create .deb files easily using python package metadata` |
| `{meta.homepage}` | The [homepage](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-homepage) of the package | `https://abrahammurciano.github.io/debby/debby` |
| `{meta.depends}` | The [dependencies](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `python3`, `jq, pv (>= 1.0.0)` |
| `{meta.recommends}` | The [recommended packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |
| `{meta.suggests}` | The [suggested packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |
| `{meta.enhances}` | The [enhanced packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |
| `{meta.breaks}` | The [packages that this package breaks](https://www.debian.org/doc/debian-policy/ch-relationships.html) | `jq, pv (>= 1.0.0)` |
| `{meta.conflicts}` | The [packages that this package conflicts with](https://www.debian.org/doc/debian-policy/ch-relationships.html) | `jq, pv (>= 1.0.0)` |
| `{files.total_size}` | The total size of all the files given with the `-f/--file` option | `123456` |
Raw data
{
"_id": null,
"home_page": "https://github.com/abrahammurciano/debby",
"name": "debby",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": null,
"author": "Abraham Murciano",
"author_email": "abrahammurciano@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/66/ce/bb373e1d805ec45adba56cf005e07c1bbbbe290c2e68b5e96ee29a5df60f/debby-1.2.0.tar.gz",
"platform": null,
"description": "# Debby\n\nCreate .deb files easily using python package metadata\n\n## Installation\n\nYou can install this package with pip.\n```sh\n$ pip install debby\n```\n\n## Links\n\n[![Documentation](https://img.shields.io/badge/Documentation-C61C3E?style=for-the-badge&logo=Read+the+Docs&logoColor=%23FFFFFF)](https://abrahammurciano.github.io/debby)\n\n[![Source Code - GitHub](https://img.shields.io/badge/Source_Code-GitHub-181717?style=for-the-badge&logo=GitHub&logoColor=%23FFFFFF)](https://github.com/abrahammurciano/debby.git)\n\n[![PyPI - debby](https://img.shields.io/badge/PyPI-debby-006DAD?style=for-the-badge&logo=PyPI&logoColor=%23FFD242)](https://pypi.org/project/debby/)\n\n## Usage\n\nThis tool creates the directory structure (including the control file) to then create a .deb package with `dpkg-deb`.\n\nYou may provide a template for the control file (see [Control File Template](#control-file-template)) or provide the metadata directly via the command line or environment variables.\n\nYou may also provide files to include in the package with `-f/--file` option, which may be passed multiple times.\n\nYou may also provide a source for the metadata (see [Metadata Sources](#metadata-sources)). You can also specify specific metadata values via the command line. If no metadata source is provided, and all the required metadata is not provided via the command line, an error will be raised.\n\n```sh\nOUT_DIR=$(debby -f path/to/binary /usr/bin/binary -f path/to/config /etc/config --pyproject pyproject.toml)\ndpkg-deb --build $OUT_DIR\n```\n\n### Metadata Sources\n\nCurrently, the following metadata sources are supported:\n\n- `--pyproject`: Reads the metadata from the given pyproject.toml file, according to the [PEP 621](https://peps.python.org/pep-0621/) specification.\n- `--poetry`: Reads the metadata from the given pyproject.toml file, according to [Poetry](https://python-poetry.org/docs/pyproject/)'s specification.\n\n### Control File Template\n\nIt is possible to provide a template for the control file with `-t/--template path/to/control.template`. If provided, this template will be used to generate the control file instead of creating one from scratch. The template should be a text file with the following allowed placeholders.\n\n| Placeholder | Description | Examples |\n| --- | --- | --- |\n| `{meta.name}` | The [name](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-package) of the package | `debby` |\n| `{meta.source}` | The [source](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-source) of the package | `debby` |\n| `{meta.version}` | The [version](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version) of the package | `0.1.0` |\n| `{meta.section}` | The [section](https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections) of the package | `misc`, `python` |\n| `{meta.priority}` | The [priority](https://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities) of the package | `optional` |\n| `{meta.architecture}` | The [architecture](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-architecture) of the package | `all` |\n| `{meta.eessential}` | The [essential](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-essential) status of the package | `yes`, `no` |\n| `{meta.maintainer}` | The [maintainer](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-maintainer) of the package | `Abraham Murciano <abrahammurciano@gmail.com>` |\n| `{meta.description}` | The [description](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-description) of the package | `Create .deb files easily using python package metadata` |\n| `{meta.homepage}` | The [homepage](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-homepage) of the package | `https://abrahammurciano.github.io/debby/debby` |\n| `{meta.depends}` | The [dependencies](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `python3`, `jq, pv (>= 1.0.0)` |\n| `{meta.recommends}` | The [recommended packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |\n| `{meta.suggests}` | The [suggested packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |\n| `{meta.enhances}` | The [enhanced packages](https://www.debian.org/doc/debian-policy/ch-relationships.html) of the package | `jq, pv (>= 1.0.0)` |\n| `{meta.breaks}` | The [packages that this package breaks](https://www.debian.org/doc/debian-policy/ch-relationships.html) | `jq, pv (>= 1.0.0)` |\n| `{meta.conflicts}` | The [packages that this package conflicts with](https://www.debian.org/doc/debian-policy/ch-relationships.html) | `jq, pv (>= 1.0.0)` |\n| `{files.total_size}` | The total size of all the files given with the `-f/--file` option | `123456` |",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Create .deb files easily using python package metadata",
"version": "1.2.0",
"project_urls": {
"Documentation": "https://abrahammurciano.github.io/debby/debby",
"Homepage": "https://github.com/abrahammurciano/debby",
"Repository": "https://github.com/abrahammurciano/debby"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ec29c7284f69083bd467f45b4b80d4036d031209f209389916ead4ea613dfe9f",
"md5": "d0a48fda03bbb0e807e6d0fc5da47c02",
"sha256": "2ad96033bdc9ee4528c0ddfc8135843f1d6f8985c0d91da0d46a1a3697f06ec1"
},
"downloads": -1,
"filename": "debby-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d0a48fda03bbb0e807e6d0fc5da47c02",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 26523,
"upload_time": "2024-05-09T13:23:10",
"upload_time_iso_8601": "2024-05-09T13:23:10.566788Z",
"url": "https://files.pythonhosted.org/packages/ec/29/c7284f69083bd467f45b4b80d4036d031209f209389916ead4ea613dfe9f/debby-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "66cebb373e1d805ec45adba56cf005e07c1bbbbe290c2e68b5e96ee29a5df60f",
"md5": "df3b4333a2386ed87e95929be204f3ef",
"sha256": "dd5955156dfe5179c7746663d1086d01ee482780c066e0e64287adb3fb9428c1"
},
"downloads": -1,
"filename": "debby-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "df3b4333a2386ed87e95929be204f3ef",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 22562,
"upload_time": "2024-05-09T13:23:11",
"upload_time_iso_8601": "2024-05-09T13:23:11.963335Z",
"url": "https://files.pythonhosted.org/packages/66/ce/bb373e1d805ec45adba56cf005e07c1bbbbe290c2e68b5e96ee29a5df60f/debby-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-09 13:23:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "abrahammurciano",
"github_project": "debby",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "debby"
}