Skip to content

Commit 9c2fdf6

Browse files
zhujian0805claude
andcommitted
Feature: Modify plugin info command to show all apps by default
- Modified `cam plugin info` to display information for ALL supported apps when no `-a` flag is provided, instead of defaulting to Claude only - Added `show_app_info()` helper function to avoid code duplication - Global CAM configuration (marketplaces/plugins) shown only once - Visual separators between app information sections - Backward compatibility maintained - `-a` flag still works for specific apps 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 83045e8 commit 9c2fdf6

1 file changed

Lines changed: 38 additions & 19 deletions

File tree

code_assistant_manager/cli/plugins/plugin_discovery_commands.py

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -638,17 +638,35 @@ def fetch_repo(
638638

639639
@plugin_app.command("info")
640640
def plugin_info(
641-
app_type: str = typer.Option(
642-
"claude",
641+
app_type: Optional[str] = typer.Option(
642+
None,
643643
"--app",
644644
"-a",
645-
help=f"App type ({', '.join(VALID_APP_TYPES)})",
645+
help=f"App type ({', '.join(VALID_APP_TYPES)}). If not specified, shows info for all apps.",
646646
),
647647
):
648-
"""Show plugin system information for an app."""
648+
"""Show plugin system information for an app, or all apps if none specified."""
649649
from code_assistant_manager.cli.option_utils import resolve_single_app
650650

651+
# If no app specified, show info for all apps
652+
if app_type is None:
653+
typer.echo(
654+
f"\n{Colors.BOLD}Plugin System Information (All Apps):{Colors.RESET}\n"
655+
)
656+
657+
for app in VALID_APP_TYPES:
658+
show_app_info(app)
659+
if app != VALID_APP_TYPES[-1]: # Don't add separator after last app
660+
typer.echo(f"\n{Colors.CYAN}{'='*50}{Colors.RESET}\n")
661+
return
662+
663+
# Show info for specific app
651664
app = resolve_single_app(app_type, VALID_APP_TYPES, default="claude")
665+
show_app_info(app)
666+
667+
668+
def show_app_info(app: str):
669+
"""Show plugin system information for a specific app."""
652670
handler = get_handler(app)
653671
manager = PluginManager()
654672

@@ -686,34 +704,35 @@ def plugin_info(
686704
)
687705
typer.echo(f" {status} {app.capitalize()} CLI: {cli_path or 'Not found'}")
688706

689-
# Get configured repos from CAM
707+
# Get configured repos from CAM (only show once for all apps)
690708
all_repos = manager.get_all_repos()
691709
configured_marketplaces = {
692710
k: v for k, v in all_repos.items() if v.type == "marketplace"
693711
}
694712
configured_plugins = {k: v for k, v in all_repos.items() if v.type == "plugin"}
695713

696-
# Show configured marketplaces (from CAM)
697-
typer.echo(
698-
f"\n{Colors.CYAN}Configured Marketplaces (CAM):{Colors.RESET} {len(configured_marketplaces)}"
699-
)
700-
for name, repo in sorted(configured_marketplaces.items()):
701-
if repo.repo_owner and repo.repo_name:
702-
typer.echo(f" • {name} ({repo.repo_owner}/{repo.repo_name})")
703-
else:
704-
typer.echo(f" • {name}")
705-
706-
# Show configured plugins (from CAM)
707-
if configured_plugins:
714+
# Show configured marketplaces (from CAM) - only for the first app
715+
if app == VALID_APP_TYPES[0]: # Only show global config once
708716
typer.echo(
709-
f"\n{Colors.CYAN}Configured Plugins (CAM):{Colors.RESET} {len(configured_plugins)}"
717+
f"\n{Colors.CYAN}Configured Marketplaces (CAM):{Colors.RESET} {len(configured_marketplaces)}"
710718
)
711-
for name, repo in sorted(configured_plugins.items()):
719+
for name, repo in sorted(configured_marketplaces.items()):
712720
if repo.repo_owner and repo.repo_name:
713721
typer.echo(f" • {name} ({repo.repo_owner}/{repo.repo_name})")
714722
else:
715723
typer.echo(f" • {name}")
716724

725+
# Show configured plugins (from CAM)
726+
if configured_plugins:
727+
typer.echo(
728+
f"\n{Colors.CYAN}Configured Plugins (CAM):{Colors.RESET} {len(configured_plugins)}"
729+
)
730+
for name, repo in sorted(configured_plugins.items()):
731+
if repo.repo_owner and repo.repo_name:
732+
typer.echo(f" • {name} ({repo.repo_owner}/{repo.repo_name})")
733+
else:
734+
typer.echo(f" • {name}")
735+
717736
# Show installed marketplaces (from app)
718737
installed_marketplaces = handler.get_known_marketplaces()
719738
typer.echo(

0 commit comments

Comments
 (0)