MCPcopy Create free account
hub / github.com/codeaashu/claude-code / installSelectedPlugins

Function installSelectedPlugins

src/commands/plugin/BrowseMarketplace.tsx:314–368  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

312
313 // Install selected plugins
314 const installSelectedPlugins = async () => {
315 if (selectedForInstall.size === 0) return;
316 const pluginsToInstall = availablePlugins.filter(p_0 => selectedForInstall.has(p_0.pluginId));
317 setInstallingPlugins(new Set(pluginsToInstall.map(p_1 => p_1.pluginId)));
318 let successCount_0 = 0;
319 let failureCount = 0;
320 const newFailedPlugins: Array<{
321 name: string;
322 reason: string;
323 }> = [];
324 for (const plugin_1 of pluginsToInstall) {
325 const result = await installPluginFromMarketplace({
326 pluginId: plugin_1.pluginId,
327 entry: plugin_1.entry,
328 marketplaceName: plugin_1.marketplaceName,
329 scope: 'user'
330 });
331 if (result.success) {
332 successCount_0++;
333 } else {
334 failureCount++;
335 newFailedPlugins.push({
336 name: plugin_1.entry.name,
337 reason: result.error
338 });
339 }
340 }
341 setInstallingPlugins(new Set());
342 setSelectedForInstall(new Set());
343 clearAllCaches();
344
345 // Handle installation results
346 if (failureCount === 0) {
347 // All succeeded
348 const message = `✓ Installed ${successCount_0} ${plural(successCount_0, 'plugin')}. ` + `Run /reload-plugins to activate.`;
349 setResult(message);
350 } else if (successCount_0 === 0) {
351 // All failed - show error with reasons
352 setError(`Failed to install: ${formatFailureDetails(newFailedPlugins, true)}`);
353 } else {
354 // Mixed results - show partial success
355 const message_0 = `✓ Installed ${successCount_0} of ${successCount_0 + failureCount} plugins. ` + `Failed: ${formatFailureDetails(newFailedPlugins, false)}. ` + `Run /reload-plugins to activate successfully installed plugins.`;
356 setResult(message_0);
357 }
358
359 // Handle completion callback and navigation
360 if (successCount_0 > 0) {
361 if (onInstallComplete) {
362 await onInstallComplete();
363 }
364 }
365 setParentViewState({
366 type: 'menu'
367 });
368 };
369
370 // Install single plugin from details view
371 const handleSinglePluginInstall = async (plugin_2: InstallablePlugin, scope: 'user' | 'project' | 'local' = 'user') => {

Callers 1

BrowseMarketplaceFunction · 0.70

Calls 6

clearAllCachesFunction · 0.85
pluralFunction · 0.85
formatFailureDetailsFunction · 0.85
hasMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected