Маніфест аддону
Кожен аддон потребує файл rayforge-addon.yaml у своїй кореневій директорії. Цей маніфест повідомляє Rayforge про ваш аддон — його назву, що він надає та як його завантажити.
Базова структура
Ось повний маніфест з усіма загальними полями:
name: my_custom_addon
display_name: "My Custom Addon"
description: "Adds support for the XYZ laser cutter."
api_version: 9
url: https://github.com/username/my-custom-addon
author:
name: Jane Doe
email: jane@example.com
depends:
- rayforge>=0.27.0
requires:
- some-other-addon>=1.0.0
provides:
backend: my_addon.backend
frontend: my_addon.frontend
assets:
- path: assets/profiles.json
type: profiles
license:
name: MIT
Обов'язкові поля
name
Унікальний ідентифікатор вашого аддону. Це має бути валідне ім'я Python-модуля — лише літери, цифри та підкреслення, і воно не може починатися з цифри.
name: my_custom_addon
display_name
Зрозуміла для людини назва, що відображається в UI. Може містити пробіли та спеціальні символи.
display_name: "My Custom Addon"
description
Короткий опис того, що робить ваш аддон. Відображається в менеджері аддонів.
description: "Adds support for the XYZ laser cutter."
api_version
Версія API, яку target-ує ваш аддон. Вона має бути не менше 1 (мінімальна підтримувана версія) і не більше поточної версії (9). Використання вищої версії, ніж підтримується, призведе до помилки валідації вашого аддону.
api_version: 9
Дивіться документацію Хуки для інформації про те, що змінилося в кожній версії.
author
Інформація про автора аддону. Поле name є обов'язковим; email — опціональне, але рекомендоване для зв'язку з користувачами.
author:
name: Jane Doe
email: jane@example.com
Опціональні поля
url
URL до домашньої сторінки або репозиторію вашого аддону.
url: https://github.com/username/my-custom-addon
depends
Обмеження версій для самого Rayforge. Вкажіть мінімальну версію, яку потребує ваш аддон.
depends:
- rayforge>=0.27.0
requires
Залежності від інших аддонів. Перелічіть імена аддонів з обмеженнями версій.
requires:
- some-other-addon>=1.0.0
version
Номер версії вашого аддону. Зазвичай визначається автоматично з git-тегів, але ви можете вказати його явно. Використовуйте семантичне версіонування (наприклад, 1.0.0).
version: 1.0.0
maturity
Рівень зрілості вашого аддону. Використовуйте experimental для аддонів, які ще не завершені та можуть мати невирішені проблеми. Експериментальні аддони відображаються зі спеціальним значком у менеджері аддонів. Значення за замовчуванням — stable; для стабільних аддонів поле можна не вказувати.
maturity: experimental
Точки входу
Секція provides визначає, що ваш аддон надає Rayforge.
Backend
Модуль бекенду завантажується як у головному процесі, так і в робочих процесах. Використовуйте це для драйверів пристроїв, типів кроків, продюсерів операцій та будь-якої основної функціональності.
provides:
backend: my_addon.backend
Значення — це шлях до Python-модуля в нотації з крапкою, відносно директорії вашого аддону.
Frontend
Модуль фронтенду завантажується лише в головному процесі. Використовуйте це для UI-компонентів, GTK-віджетів та всього, що потребує головного вікна.
provides:
frontend: my_addon.frontend
Assets
Ви можете включити файли ресурсів, які Rayforge розпізнає. Кожен ресурс має шлях і тип:
provides:
assets:
- path: assets/profiles.json
type: profiles
- path: assets/templates
type: templates
path відносний до кореня вашого аддону і має існувати. Типи ресурсів визначаються Rayforge і можуть включати такі речі, як профілі пристроїв, бібліотеки матеріалів або шаблони.
Інформація про ліцензію
Поле license описує, як ліцензований ваш аддон. Для безкоштовних аддонів просто вкажіть назву ліцензії, використовуючи SPDX-ідентифікатор:
license:
name: MIT
Поширені SPDX-ідентифікатори включають MIT, Apache-2.0, GPL-3.0 та BSD-3-Clause.
Платні аддони
Rayforge підтримує платні аддони через перевірку ліцензій Gumroad. Якщо ви хочете продавати свій аддон, ви можете налаштувати його на вимогу валідної ліцензії перед початком роботи.
Базова конфігурація платного аддону
license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon
Коли required дорівнює true, Rayforge перевірить наявність валідної ліцензії перед завантаженням вашого аддону. purchase_url показується користувачам, які не мають ліцензії.
Gumroad Product ID
Додайте ваш Gumroad Product ID для активації перевірки ліцензії:
license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon
product_id: "abc123def456"
Для кількох Product ID (наприклад, різні цінові рівні):
license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon
product_ids:
- "abc123def456"
- "xyz789ghi012"
Повний приклад платного аддону
Ось повний маніфест для платного аддону:
name: premium_laser_pack
display_name: "Premium Laser Pack"
description: "Advanced features for professional laser cutting."
api_version: 9
url: https://example.com/premium-laser-pack
author:
name: Your Name
email: you@example.com
depends:
- rayforge>=0.27.0
provides:
backend: premium_pack.backend
frontend: premium_pack.frontend
license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/premium-laser-pack
product_ids:
- "standard_tier_id"
- "pro_tier_id"
Перевірка статусу ліцензії в коді
У коді вашого аддону ви можете перевірити, чи ліцензія валідна:
@hookimpl
def rayforge_init(context):
if context.license_validator:
# Check if user has a valid license for your product
is_valid = context.license_validator.is_product_valid("your_product_id")
if not is_valid:
# Optionally show a message or limit functionality
logger.warning("License not found - some features disabled")
Правила валідації
Rayforge валідує ваш маніфест при завантаженні аддону. Ось правила:
Поле name має бути валідним Python-ідентифікатором (літери, цифри, підкреслення, без цифр на початку). Поле api_version має бути цілим числом від 1 до поточної версії. Поле author.name не може бути порожнім або містити текст-заглушку на кшталт "your-github-username". Точки входу мають бути валідними шляхами до модулів, і модулі мають існувати. Шляхи до ресурсів мають бути відносними (без .. або початкового /), і файли мають існувати.
Якщо валідація не пройде, Rayforge залогує помилку та пропустить ваш аддон. Перевірте вивід консолі під час розробки, щоб виявити ці проблеми.