Metadata-Version: 2.4
Name: pyinstaller-plus
Version: 0.1.29
Summary: PyInstaller builder plugin for DistroMate
License-Expression: LicenseRef-Proprietary
Keywords: pyinstaller,distromate,packaging,installer,publish
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: pyinstaller
Requires-Dist: PyYAML>=6
Requires-Dist: tomli; python_version < "3.11"

# pyinstaller-plus

Build Python desktop apps through `distromate` with PyInstaller as the host build tool.

## Install

```bash
pip install pyinstaller-plus
```

Install the DistroMate CLI separately. This package only provides the builder plugin entrypoint.

## Usage

Point `distromate.yaml` at the builder plugin and put PyInstaller arguments in `source.options.pyinstallerArgs`:

```yaml
source:
  type: adapter
  plugin: pyinstaller
  options:
    projectDir: .
    pyinstallerArgs:
      - --onefile
      - --windowed
      - app.py

publish:
  appId: "70253487"
  channel: stable

package:
  publisher: Demo Inc.
```

Run DistroMate directly:

```bash
distromate package -v 1.2.3
distromate publish -v 1.2.3
```

Installing `pyinstaller-plus` adds the `dm-plugin-pyinstaller` command. `distromate` no longer installs plugins for you.

## Behavior

- runs `python -m PyInstaller ...` first
- derives `productName`, `package.name`, `package.shortDescription`, `source.root`, `source.executable`, icon, and publisher from PyInstaller args or `.spec` metadata
- merges generic DistroMate fields with values resolved from `source.options`
- returns prepared native source metadata plus inferred DistroMate defaults over JSON/stdio so `distromate` continues the package or publish flow

## Notes

- `source.options.pyinstallerArgs` is the main pass-through for PyInstaller arguments
- if `version` is not set in `source.options`, the plugin falls back to `pyproject.toml -> project.version`
