Open Stream Deck

CLI opensd

Команды opensd, сборка для каждого языка, общий кеш Rust и режим разработчика.

opensd создаёт, собирает, проверяет и упаковывает плагины на любом языке. Это один бинарный файл около 2 МБ без рантайма WebAssembly внутри. Способы установки перечислены в быстром старте.

Команды выполняются внутри каталога проекта, если не сказано иное.

КомандаЧто делает
opensd new <dir> [--lang rust|js|ts] [--id <id>] [--name <name>] [--sdk-path <dir>]Создаёт проект из шаблона. По умолчанию --lang rust, id com.example.<имя каталога>. --sdk-path подключает локальную копию SDK вместо crates.io
opensd build [--debug]Собирает код и кладёт плагин в .opensd/stage-*, как он будет лежать в приложении
opensd pack [--out <file>]Собирает и пишет dist/<id>-<version>.opensd. Выводит размер и SHA-256
opensd check [<path>]Проверяет проект без сборки или готовый пакет .opensd
opensd inspect <file>Показывает манифест, код, разрешения простыми словами, действия и хэши всех файлов
opensd dev [--endpoint <file>]Запускает плагин в приложении и перезапускает при каждом изменении файлов
opensd cleanУдаляет .opensd и dist

Сборка

  • Rust: cargo build --lib --release --target wasm32-unknown-unknown. Каталог target общий для всех плагинов и лежит в кеше пользователя: %LOCALAPPDATA%\opensd\target, ~/Library/Caches/opensd/target или ~/.cache/opensd/target. OPENSD_SHARED_TARGET=0 или собственный CARGO_TARGET_DIR отключают это поведение. Инкрементальный кеш выключен: для маленького крейта он только занимает место.
  • JavaScript: сборки нет, берётся файл из runtime.main.
  • TypeScript и другие сборщики: если в проекте есть package.json со скриптом build, CLI вызывает npm run build и берёт результат из runtime.main.
  • Другие языки WebAssembly: соберите модуль своим инструментом в путь из runtime.main и вызовите opensd pack. Модуль должен соблюдать ABI.

В пакет попадают код, manifest.json, index.json, файлы из package.include (по умолчанию assets и ui), а также LICENSE и NOTICE, если они есть. Скрытые файлы, node_modules, target и dist пропускаются.

Режим разработчика

  1. В приложении включите «Режим разработчика» в «Настройки», «Плагины». Приложение запишет порт и токен в opensd-dev.json в своей папке данных.
  2. Запустите opensd dev в проекте. CLI найдёт файл сам; на нестандартной установке передайте его через --endpoint.
  3. Плагин заменяет установленную копию с тем же id, пока идёт сессия. Каждое изменение файла пересобирает и перезапускает его, журнал выводится в терминал.
  4. Ctrl+C завершает сессию. Через 15 секунд без сигнала приложение возвращает установленную версию само.

Связь идёт только по 127.0.0.1 и требует токен из файла. Запросы из браузера с заголовком Origin приложение отклоняет.