CLI util to create the scaffolding of a Stream Deck plugin, validate it, and pack it to be ready for install.
Project description
Python StreamDeck Plugin SDK CLI
A command-line interface (CLI) tool for packaging Elgato Stream Deck plugins. This tool helps automate the process of creating plugin packages using the Python plugin SDK library.
Features
- Create a fresh Python plugin project with scaffolding provided by a template.
- Validate a plugin's structure.
- Pack Stream Deck plugins into distributable .streamDeckPlugin files
- Support for
.packignorefile to exclude unwanted files/directories - Automatic plugin UUID directory structure creation
Installation
To install the required dependencies, run:
pip install streamdeck-plugin-sdk-cli
Usage
Create a New Plugin
To create a new Stream Deck plugin project, run:
streamdeck-cli create
This will create a new project at the current directory from the template at https://github.com/strohganoff/python-streamdeck-plugin-template.git.
Validate a Plugin
To validate the plugin manifest and directory structure, run:
streamdeck-cli validate /path/to/plugin
Note that the manifest.json file must be updated and saved as a proper json file (no comments) to pass validation.
Pack a Plugin
To pack the plugin into a .streamDeckPlugin file, run:
streamdeck-cli pack /path/to/plugin --output /path/to/output
If you don't pass in a version argument, the script will automatically look up the plugin version in the manifest.json file to place the release package into a directory named for that version under the specified output directory.
If there is already a release directory with that version, the script will handle giving a subversion (or incrementing the subversion) to apply to the directory name. So if a version '0.0.1' has already been packed, a new release directory will be saved to named '0.0.1-1', but the version in the manifest.json file will be unchanged. If a release was already saved to directory '0.0.1-1', then a new release directory will be saved to named '0.0.1-2'.
Next Step
Simply double-click the .streamDeckPlugin file, which will load up the plugin in the Stream Deck application.
Pack for debug mode
To pack the plugin in debug mode, which enables remote debugging capabilities, use the --debug flag:
streamdeck-cli pack /path/to/plugin --debug --debug-port 5679
This will create a flag file named .debug in the packed plugin containing the specified port.
When this file is included, the plugin will wait for a debugger to attach at that port before starting. You can use tools like VS Code's Python debugger or PyCharm's remote debugger to connect to it.
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file streamdeck_plugin_sdk_cli-0.1.0.tar.gz.
File metadata
- Download URL: streamdeck_plugin_sdk_cli-0.1.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dd99a3f2009e4d5e8aef4f7261798ed08d5d4eab8af524c95f5749ca7593193
|
|
| MD5 |
eea56890839f8bb7009e9f823769904a
|
|
| BLAKE2b-256 |
765f5b1675456f53ec73ead0b51e6beb0ed1546111330c5857a6549125ae9916
|
Provenance
The following attestation bundles were made for streamdeck_plugin_sdk_cli-0.1.0.tar.gz:
Publisher:
publish.yml on strohganoff/python-streamdeck-plugin-sdk-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamdeck_plugin_sdk_cli-0.1.0.tar.gz -
Subject digest:
7dd99a3f2009e4d5e8aef4f7261798ed08d5d4eab8af524c95f5749ca7593193 - Sigstore transparency entry: 174399571
- Sigstore integration time:
-
Permalink:
strohganoff/python-streamdeck-plugin-sdk-cli@81d02a90ae88faa23480500cfaef404cde2c2582 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/strohganoff
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@81d02a90ae88faa23480500cfaef404cde2c2582 -
Trigger Event:
release
-
Statement type:
File details
Details for the file streamdeck_plugin_sdk_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: streamdeck_plugin_sdk_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c63db51b799d1ddcd36a825ae2c38ed395ac2d1f66ae023bc795e5d164cda2c
|
|
| MD5 |
7fcf772e70203c884f975aabf65b8f0a
|
|
| BLAKE2b-256 |
ad658a755c6a0dada6b601bbead5963da2d97d57b12d6e6ff4cd0a4fed8788bd
|
Provenance
The following attestation bundles were made for streamdeck_plugin_sdk_cli-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on strohganoff/python-streamdeck-plugin-sdk-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
streamdeck_plugin_sdk_cli-0.1.0-py3-none-any.whl -
Subject digest:
4c63db51b799d1ddcd36a825ae2c38ed395ac2d1f66ae023bc795e5d164cda2c - Sigstore transparency entry: 174399572
- Sigstore integration time:
-
Permalink:
strohganoff/python-streamdeck-plugin-sdk-cli@81d02a90ae88faa23480500cfaef404cde2c2582 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/strohganoff
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@81d02a90ae88faa23480500cfaef404cde2c2582 -
Trigger Event:
release
-
Statement type: