Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 1 #43

Merged
merged 7 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
Build:
strategy:
matrix:
node_version: ["20.5.1", "20.8.1"]
node_version: ["20.15.0"]
os: ["macos-latest", "windows-latest"]

runs-on: ${{ matrix.os }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: "🗃️ Setup Node"
uses: actions/setup-node@v4
with:
node-version: "20.8.1"
node-version: "20.15.0"
registry-url: "https://registry.npmjs.org"

- name: "📐 Install dependencies"
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@

# Change Log

## 1.0.0

### ♻️ Update

- Update new plugins to use `@elgato/streamdeck` version 1.
- Update CDN of property inspectors.
- Bump dependencies of Stream Deck CLI.
- Bump dependencies of plugins scaffolded with `streamdeck create`.

## 0.3.2

### ♻️ Update
Expand Down
318 changes: 14 additions & 304 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@

[![Stream Deck SDK banner](https://images.ctfassets.net/8j9xr8kwdre8/1ihLKCwNWEfPixs27dq0c0/130be66a5173f332e4caa892a3462893/banner.png)](https://docs.elgato.com/sdk)

# Maker CLI (Beta)
# Stream Deck CLI

[![Maker CLI npm package](https://img.shields.io/npm/v/%40elgato/cli?logo=npm&logoColor=white)](https://www.npmjs.com/package/@elgato/cli)
[![Build status](https://img.shields.io/github/actions/workflow/status/elgatosf/cli/build.yml?branch=main&label=Build&logo=GitHub)](https://github.com/elgatosf/cli/actions)
[![SDK documentation](https://img.shields.io/badge/Documentation-2ea043?labelColor=grey&logo=gitbook&logoColor=white)](https://docs.elgato.com/sdk)
[![Join the Marketplace Makers Discord](https://img.shields.io/badge/Marketplace%20Makers-5662f6?labelColor=grey&logo=discord&logoColor=white)](https://discord.gg/GehBUcu627)
[![SDK documentation](https://img.shields.io/badge/Documentation-2ea043?labelColor=grey&logo=gitbook&logoColor=white)](https://docs.elgato.com/streamdeck/cli)
[![Elgato homepage](https://img.shields.io/badge/Elgato-3431cf?labelColor=grey&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RWxnYXRvPC90aXRsZT48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJtMTMuODgxOCA4LjM5NjQuMDI2MS4wMTk2IDkuOTQ5NCA1LjcxNzJjLS40ODg0IDIuNzI5LTEuOTE5NiA1LjIyMjMtNC4wMzg0IDcuMDI1M0ExMS45MjYyIDExLjkyNjIgMCAwIDEgMTIuMDk3IDI0Yy0zLjE5MjUgMC02LjE5MzktMS4yNDc3LTguNDUyNy0zLjUxNDRDMS4zODY4IDE4LjIxODguMTQyNyAxNS4yMDQ0LjE0MjcgMTJjMC0zLjIwNDIgMS4yNDQtNi4yMTg3IDMuNTAxNS04LjQ4NTRDNS45MDE5IDEuMjQ4IDguOTAzMiAwIDEyLjA5NyAwYzIuNDM5NCAwIDQuNzg0Ny43MzMzIDYuNzgzIDIuMTE4NyAxLjk1MjYgMS4zNTQgMy40NDY2IDMuMjM1NyA0LjMyMjcgNS40NDIyLjExMTIuMjgyOS4yMTQ5LjU3MzYuMzA1MS44NjU3bC0yLjEyNTUgMS4yMzU5YTkuNDkyNCA5LjQ5MjQgMCAwIDAtLjI2MTktLjg2OTRjLTEuMzU0LTMuODMwMy00Ljk4MTMtNi40MDQ4LTkuMDIzNy02LjQwNDhDNi44MTcxIDIuMzg4MyAyLjUyMiA2LjcwMDUgMi41MjIgMTJjMCA1LjI5OTUgNC4yOTUgOS42MTE1IDkuNTc0OCA5LjYxMTUgMi4wNTIgMCA0LjAwODQtLjY0NDIgNS42NTk2LTEuODY0NyAxLjYxNzItMS4xOTU1IDIuODAzNi0yLjgzMzcgMy40MzA5LTQuNzM2NGwuMDA2NS0uMDQxOUw5LjU5MDYgOC4zMDQ4djcuMjI1Nmw0LjAwMDQtMi4zMTM4IDIuMDYgMS4xODExLTUuOTk2MiAzLjQ2ODgtMi4xMi0xLjIxMjZWNy4xOTQzbDIuMTE3NC0xLjIyNDUgNC4yMzA5IDIuNDI3OS0uMDAxMy0uMDAxMyIvPjwvc3ZnPg==)](https://elgato.com)
[![Join the Marketplace Makers Discord](https://img.shields.io/badge/Marketplace%20Makers-5662f6?labelColor=grey&logo=discord&logoColor=white)](https://discord.gg/GehBUcu627)
[![Stream Deck CLI npm package](https://img.shields.io/npm/v/%40elgato/cli?logo=npm&logoColor=white)](https://www.npmjs.com/package/@elgato/cli)
[![Build status](https://img.shields.io/github/actions/workflow/status/elgatosf/cli/build.yml?branch=main&label=Build&logo=GitHub)](https://github.com/elgatosf/cli/actions)

</div>

## Installation

```
npm install -g @elgato/cli
npm install -g @elgato/cli@latest
```

## Usage
Expand Down Expand Up @@ -43,305 +43,15 @@ Alias:
sd
```

## Commands

- [create](#%EF%B8%8F-create)<br />Creation wizard.
- [link](#-link)<br />Links the plugin to Stream Deck.
- [restart](#%EF%B8%8F-restart)<br />Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first.
- [stop](#-stop)<br />Stops the plugin in Stream Deck.
- [validate](#sd-validate)<br />Validates the Stream Deck plugin.
- [pack](#sd-pack)<br />Creates a .streamDeckPlugin file from the plugin.
- [dev](#%EF%B8%8F-dev)<br />Enables developer mode.
- [config](#%EF%B8%8F-config)<br />Manage the local configuration.

## ✏️ create

Creation wizard.

### Synopsis

```
streamdeck create
```

### Description

The creation wizard will guide you through creating Stream Deck plugins with our official Node.js SDK, and provides all scaffolding required to get started quickly. As part of the wizard, developer mode is enabled, and the plugin built and linked to Stream Deck making it ready for use.

> To learn more about creating Stream Deck plugins with Node.js, see our [Stream Deck SDK](https://github.com/elgatosf/streamdeck).

#### See Also

- [dev](#%EF%B8%8F-dev)
- [link](#-link)

## 🔗 link

Links the plugin to Stream Deck.

### Synopsis

```
streamdeck link [path]
```

### Description

Links the specified path (folder) to Stream Deck, effectively installing the plugin, allowing it to be accessed from within Stream Deck. When the path is unspecified, the current working directory is used.

Note: The folder name should reflect the UUID of the plugin, and must be suffixed with `.sdPlugin`, eg. `com.elgato.wave-link.sdPlugin`.

## ♻️ restart

Starts the plugin in Stream Deck; if the plugin is already running, it is stopped first.

### Synopsis

```
streamdeck restart <uuid>

alias: r
```

### Description

Instructs Stream Deck to start the plugin, as determined by the UUID. If the plugin is already running within Stream Deck, it is first stopped and then started. As part of restarting the plugin all resources associated with the plugin, including manifest definitions, are reloaded.

#### See Also

- [stop](#-stop)

## 🛑 stop

Stops the plugin in Stream Deck.

### Synopsis

```
streamdeck stop <uuid>

alias: s
```

### Description

Instructs Stream Deck to stop the plugin, as determined by the UUID. When stopped, the plugin and all of its resources are unloaded from Stream Deck allowing the plugin to be changed.

#### See Also

- [restart](#%EF%B8%8F-restart)

<h3 id="sd-validate">
✅ validate
</h3>

Validates the Stream Deck plugin.

### Synopsis

```
streamdeck validate [path]

Arguments:
path Path of the plugin to validate

Options:
--force-update-check Forces an update check (default: false)
--no-update-check Disables updating schemas
```

### Description

Validates the Stream Deck plugin in the current working directory, or `path` when specified, and outputs the validation results. By default, the command will automatically check and install validation rule updates; this check occurs daily, unless forced with `--force-update-check` or prevented with `--no-update-check`.

### Configuration

#### `--force-update-check`

- Default: `false`
- Type: Boolean

Forces an update check of new validation rules; by default, an update check will occur once a day. Cannot be used in conjunction with `--no-update-check`.

#### `--no-update-check`

- Default: `false`
- Type: Boolean

Prevents an update check of new validation rules. This configuration option is recommended when using the CLI as part of a build pipeline. Cannot be used in conjunction with `--force-update-check`.

<h3 id="sd-pack">
📦 pack
</h3>

Creates a .streamDeckPlugin file from the plugin.

### Synopsis

```
streamdeck pack [options] [path]

Arguments:
path Path of the plugin to pack

Options:
--dry-run Generates a report without creating a package (default: false)
-f|--force Forces saving, overwriting an package if it exists (default: false)
-o|--output <output> Specifies the path for the output directory
--version <version> Plugin version; value will be written to the manifest"
--force-update-check Forces an update check (default: false)
--no-update-check Disables updating schemas

alias: bundle
```

### Description

Creates a `.streamDeckPlugin` installer file allowing the plugin to be distributed. The plugin must pass [validation](#sd-validate) prior to bundling.

By default, all files within the specified `path` are included except `.git`, `/.env*`, `*.log`, and `*.js.map` directories and files. To specify directories or files that should be ignored, a `.sdignore` file can be created in the root of the plugin, i.e. alongside the manifest, using [`.gitignore` specification](https://git-scm.com/docs/gitignore).

### Example

Create a `.streamDeckPlugin` of the plugin located in `com.elgato.test.sdPlugin/`, writing the packaged file to a `dist/` folder, specifying the new version.

```
streamdeck pack com.elgato.test.sdPlugin/ --output dist/
```

Create a `.streamDeckPlugin` of the current working directory, specifying a new version of the plugin.

```
streamdeck pack --version 0.8.2
```

Generate a report for the plugin in the current working directory, without creating a `.streamDeckPlugin` file.

```
streamdeck pack --dry-run
```

### Configuration

#### `--dry-run`

- Default: `false`
- Type: Boolean

Generates a report without creating a package.

#### `-f|--force`

- Default: `false`
- Type: Boolean

Determines whether to overwrite the existing `.streamDeckPlugin` file if one already exists at the specified `output` directory.

#### `-o|--output <output>`

- Default: `cwd`
- Type: String

Specifies the path for the output directory where the `.streamDeckPlugin` file will be created.

#### `--version <version>`

- Default: `undefined`
- Type: String (semver)

Plugin version; value will be written to the manifest's `Version` property prior to packaging the plugin.

#### `--force-update-check`

- Default: `false`
- Type: Boolean

Forces an update check of new validation rules; by default, an update check will occur once a day. Cannot be used in conjunction with `--no-update-check`.

#### `--no-update-check`

- Default: `false`
- Type: Boolean

Prevents an update check of new validation rules. This configuration option is recommended when using the CLI as part of a build pipeline. Cannot be used in conjunction with `--force-update-check`.

## 🏗️ dev

Enables developer mode.

### Synopsis

```
streamdeck dev [-d|--disable]
```

### Description

Developer mode enables the local development of Stream Deck plugins, and provides the Maker with additional capabilities for building and debugging with Stream Deck. Whilst enabled, Node.js plugins can be executed, and it is also possible to debug the property inspector locally at `http://localhost:23654/`.

## ⚙️ config

Manage the local configuration.

### Synopsis

```
streamdeck config set <key>=<value> [<key>=<value>...]
streamdeck config unset <key> [<key>...]
streamdeck config list
streamdeck config reset
```

### Description

The CLI gets its configuration settings from the user's local environment. These configuration settings define the output of commands and how they're executed, and enable customization of interaction. The `streamdeck config` command can be used to update and manage these settings.

#### Sub-commands

#### set

```
streamdeck config set <key>=<value> [<key>=<value>...]
```

Sets each of the configuration keys to the value provided.

#### unset

```
streamdeck config <key> [<key>...]
```

Sets each of the configuration keys to their default values.

#### reset

```
streamdeck config reset
```

Resets all configuration keys to their default values.

#### list

```
streamdeck config list
```

Lists the defined configuration, eg. values defined using [config set](#set).

### Configuration

#### reduceMotion

- Default: `false`
- Type: Boolean
## Creating a Stream Deck plugin

Determines whether feedback provided should prefer reduced motion; when `true`, the busy indicator will be rendered as a static indicator.
The `streamdeck create` command enables you to scaffold a new Stream Deck plugin with ease. Running the command will initialize the creation wizard, and guide you through creating a new plugin.

#### packageManager
<p align="center">
<img src="./assets/cli-create.gif">
</p>

- Default: `npm`
- Type: bun | npm | pnpm | yarn
## Further Reading

Determines the package manager to use when installing dependencies for every new project.
- Learn more about [Stream Deck CLI commands](https://docs.elgato.com/streamdeck/cli).
- Read about [getting started with the Stream Deck SDK](https://docs.elgato.com/sdk).
Binary file added assets/cli-create.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading