diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-11-06 11:21:43 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-11-06 11:21:43 +0900 |
| commit | bfca45751075f2bb4ba48911149ef50a1d174787 (patch) | |
| tree | 334f385a768e3f9d0c9ba614d2cbb174dbbadcec /packages/frontend/src/plugin.ts | |
| parent | 2023.11.0 (diff) | |
| download | sharkey-bfca45751075f2bb4ba48911149ef50a1d174787.tar.gz sharkey-bfca45751075f2bb4ba48911149ef50a1d174787.tar.bz2 sharkey-bfca45751075f2bb4ba48911149ef50a1d174787.zip | |
enhance(frontend): improve aiscript plugin error handling
Diffstat (limited to 'packages/frontend/src/plugin.ts')
| -rw-r--r-- | packages/frontend/src/plugin.ts | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts index 3bc91f6ac4..e24f646a35 100644 --- a/packages/frontend/src/plugin.ts +++ b/packages/frontend/src/plugin.ts @@ -11,10 +11,9 @@ import { Plugin, noteActions, notePostInterruptors, noteViewInterruptors, postFo const parser = new Parser(); const pluginContexts = new Map<string, Interpreter>(); -export function install(plugin: Plugin): void { +export async function install(plugin: Plugin): Promise<void> { // 後方互換性のため if (plugin.src == null) return; - console.info('Plugin installed:', plugin.name, 'v' + plugin.version); const aiscript = new Interpreter(createPluginEnv({ plugin: plugin, @@ -42,7 +41,14 @@ export function install(plugin: Plugin): void { initPlugin({ plugin, aiscript }); - aiscript.exec(parser.parse(plugin.src)); + try { + await aiscript.exec(parser.parse(plugin.src)); + } catch (err) { + console.error('Plugin install failed:', plugin.name, 'v' + plugin.version); + return; + } + + console.info('Plugin installed:', plugin.name, 'v' + plugin.version); } function createPluginEnv(opts: { plugin: Plugin; storageKey: string }): Record<string, values.Value> { |