mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-06 23:32:12 +03:00
3.6 KiB
3.6 KiB
title, version, lastUpdated
| title | version | lastUpdated |
|---|---|---|
| System wtyczek CLI OmniRoute | 3.8.40 | 2026-06-28 |
System wtyczek CLI OmniRoute
Rozszerzaj CLI omniroute bez modyfikowania jego rdzenia. Wtyczki stosują konwencję nazewnictwa omniroute-cmd-*, podobnie jak gh extension lub kubectl plugin.
Szybki start
# Install a plugin from npm
omniroute plugin install stripe
# Install a local plugin in development
omniroute plugin install ./my-plugin
# List installed plugins
omniroute plugin list
# Scaffold a new plugin
omniroute plugin scaffold myplugin
cd omniroute-cmd-myplugin
omniroute plugin install .
Anatomia wtyczki
Wtyczka to pakiet npm o nazwie omniroute-cmd-<name> (lub @scope/omniroute-cmd-<name>).
omniroute-cmd-myplugin/
├── package.json # must have "type": "module" and "main": "index.mjs"
├── index.mjs # exports register(program, ctx) + optional meta
└── README.md
package.json
{
"name": "omniroute-cmd-myplugin",
"version": "0.1.0",
"type": "module",
"main": "index.mjs",
"engines": { "omniroute": ">=4.0.0" },
"keywords": ["omniroute-plugin", "omniroute-cmd"]
}
index.mjs
export const meta = {
name: "myplugin",
version: "0.1.0",
description: "My plugin for OmniRoute",
omnirouteApi: ">=4.0.0",
};
export function register(program, ctx) {
program
.command("myplugin")
.description(meta.description)
.option("-n, --name <name>")
.action(async (opts, cmd) => {
const gOpts = cmd.optsWithGlobals();
const res = await ctx.apiFetch("/api/combos", {
baseUrl: gOpts.baseUrl,
apiKey: gOpts.apiKey,
});
const data = await res.json();
ctx.emit(data, gOpts);
});
}
API kontekstu wtyczki
Obiekt ctx przekazywany do register(program, ctx):
| Property | Type | Description |
|---|---|---|
ctx.apiFetch(path, opts) |
async function |
Uwierzytelniony fetch do serwera OmniRoute |
ctx.emit(data, opts) |
function |
Wyjście w formacie table/json/jsonl/csv wg flagi --output |
ctx.t(key) |
async function |
Wyszukiwanie tłumaczenia i18n |
ctx.withSpinner(label, fn) |
async function |
Opakowuje async fn w spinner ora |
ctx.baseUrl |
string |
Rozwiązany base URL |
ctx.apiKey |
string | null |
Klucz API, jeśli podany |
Odkrywanie
Wtyczki są wykrywane z:
~/.omniroute/plugins/<name>/— instalacje lokalne użytkownikaOMNIROUTE_PLUGIN_PATHenv var — niestandardowy katalog
Błędy ładowania są przechwytywane i wypisywane jako ostrzeżenia — uszkodzona wtyczka nigdy nie zawiesza CLI.
Bezpieczeństwo
Wtyczki działają z tymi samymi uprawnieniami procesu Node.js co omniroute. Instaluj wtyczki wyłącznie ze źródeł, którym ufasz. omniroute plugin install wyświetla wyraźne ostrzeżenie i wymaga --yes albo interaktywnego potwierdzenia.
Publikowanie
- Upewnij się, że
package.jsonma"keywords": ["omniroute-plugin"] npm publishjak zwykle- Użytkownicy odkrywają wtyczki przez
omniroute plugin search <query>(przeszukuje rejestr npm)
Przykładowa wtyczka
Zobacz examples/omniroute-cmd-hello/ — minimalny działający przykład z meta + register().