Files
api/plugin
renovate[bot] 106ea09399 fix(deps): update dependency commander to v14 (#1394)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [commander](https://redirect.github.com/tj/commander.js) | [`^13.1.0`
-> `^14.0.0`](https://renovatebot.com/diffs/npm/commander/13.1.0/14.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/commander/14.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/commander/14.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/commander/13.1.0/14.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/commander/13.1.0/14.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>tj/commander.js (commander)</summary>

###
[`v14.0.0`](https://redirect.github.com/tj/commander.js/blob/HEAD/CHANGELOG.md#1400-2025-05-18)

[Compare
Source](https://redirect.github.com/tj/commander.js/compare/v13.1.0...v14.0.0)

##### Added

- support for groups of options and commands in the help using low-level
`.helpGroup()` on `Option` and `Command`, and higher-level
`.optionsGroup()` and `.commandsGroup()` which can be used in chaining
way to specify group title for following options/commands
(\[[#&#8203;2328](https://redirect.github.com/tj/commander.js/issues/2328)])
- support for unescaped negative numbers as option-arguments and
command-arguments
(\[[#&#8203;2339](https://redirect.github.com/tj/commander.js/issues/2339)])
- TypeScript: add `parseArg` property to `Argument` class
(\[[#&#8203;2359](https://redirect.github.com/tj/commander.js/issues/2359)])

##### Fixed

- remove bogus leading space in help when option has default value but
not a description
(\[[#&#8203;2348](https://redirect.github.com/tj/commander.js/issues/2348)])
- `.configureOutput()` now makes copy of settings instead of modifying
in-place, fixing side-effects
(\[[#&#8203;2350](https://redirect.github.com/tj/commander.js/issues/2350)])

##### Changed

-   *Breaking:* Commander 14 requires Node.js v20 or higher
- internal refactor of `Help` class adding `.formatItemList()` and
`.groupItems()` methods
(\[[#&#8203;2328](https://redirect.github.com/tj/commander.js/issues/2328)])

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-19 12:17:59 -04:00
..
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00
2025-03-04 15:18:04 -05:00

Unraid Plugin Builder

Tool for building and testing Unraid plugins locally as well as packaging them for deployment.

Development Workflow

1. Watch for Changes

The watch command will automatically sync changes from the API, UI components, and web app into the plugin source:

# Start watching all components
pnpm run watch:all

# Or run individual watchers:
pnpm run api:watch    # Watch API changes
pnpm run ui:watch     # Watch Unraid UI component changes
pnpm run wc:watch     # Watch web component changes

This will copy:

  • API files to ./source/dynamix.unraid.net/usr/local/unraid-api
  • UI components to ./source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components
  • Web components to the same UI directory

2. Build the Plugin

Once your changes are ready, build the plugin package:

# Build using Docker - on non-Linux systems
pnpm run docker:build-and-run

# Or build with the build script
pnpm run build:validate

This will create the plugin files in ./deploy/release/

3. Serve and Install

Start a local HTTP server to serve the plugin files:

# Serve the plugin files
pnpm run http-server

Then install the plugin on your Unraid development machine by visiting:

http://SERVER_NAME.local/Plugins

Then paste the following URL into the Unraid Plugins page:

http://YOUR_LOCAL_DEV_MACHINE_IP:5858/plugins/local/dynamix.unraid.net.plg

Replace SERVER_NAME with your development machine's hostname.

Development Tips

  • Run watchers in a separate terminal while developing
  • The http-server includes CORS headers for local development
  • Check the Unraid system log for plugin installation issues

Environment Setup

  1. Initialize environment:

    pnpm run env:init
    
  2. Validate environment:

    pnpm run env:validate
    

Available Commands

Build Commands

  • build - Build the plugin package
  • build:validate - Build with environment validation
  • docker:build - Build the Docker container
  • docker:run - Run the builder in Docker
  • docker:build-and-run - Build and run in Docker

Watch Commands

  • watch:all - Watch all component changes
  • api:watch - Watch API changes
  • ui:watch - Watch UI component changes
  • wc:watch - Watch web component changes

Server Commands

  • http-server - Serve the plugin files locally

Environment Commands

  • env:init - Create initial .env file
  • env:validate - Validate environment setup
  • env:clean - Remove .env file

Troubleshooting

  1. Watch not updating files

    • Check that source directories exist
    • Verify file permissions
  2. Build failures

    • Ensure .env file exists
    • Check Docker setup if using containerized build
    • Verify source files are present
  3. Installation issues

    • Confirm http-server is running
    • Check your local IP is correct
    • Verify plugin file permissions