Skip to content

Commit e2d7fbb

Browse files
committed
fix(plugins): allow browse on any repo with plugins list
- Always include plugins list in FetchedRepoInfo (needed for browse) - Remove marketplace type check in browse command (single-plugin repos can still be browsed)
1 parent 1c35d37 commit e2d7fbb

2 files changed

Lines changed: 6 additions & 13 deletions

File tree

code_assistant_manager/cli/plugin_commands.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -507,27 +507,18 @@ def browse_marketplace(
507507
typer.echo(f" • {name}")
508508
raise typer.Exit(1)
509509

510-
if repo.type != "marketplace":
511-
typer.echo(
512-
f"{Colors.RED}✗ '{marketplace}' is a plugin, not a marketplace.{Colors.RESET}"
513-
)
514-
typer.echo(
515-
f"\n{Colors.CYAN}To install:{Colors.RESET} cam plugin install {marketplace}"
516-
)
517-
raise typer.Exit(1)
518-
519510
typer.echo(f"{Colors.CYAN}Fetching plugins from {marketplace}...{Colors.RESET}")
520511

521512
# Fetch marketplace info
522513
if not repo.repo_owner or not repo.repo_name:
523-
typer.echo(f"{Colors.RED}Marketplace missing repo info.{Colors.RESET}")
514+
typer.echo(f"{Colors.RED}Repo missing owner/name info.{Colors.RESET}")
524515
raise typer.Exit(1)
525516

526517
from code_assistant_manager.plugins.fetch import fetch_repo_info
527518

528519
info = fetch_repo_info(repo.repo_owner, repo.repo_name, repo.repo_branch)
529520
if not info or not info.plugins:
530-
typer.echo(f"{Colors.RED}✗ Could not fetch marketplace plugins.{Colors.RESET}")
521+
typer.echo(f"{Colors.RED}✗ Could not fetch plugins from repo.{Colors.RESET}")
531522
raise typer.Exit(1)
532523

533524
# Filter plugins

code_assistant_manager/plugins/fetch.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ def fetch_repo_info(
145145
plugins = data.get("plugins", [])
146146
plugin_count = len(plugins)
147147

148-
# Determine type based on plugin count
148+
# Determine type: if it has a marketplace.json with plugins array, it's a marketplace
149+
# Even single-plugin repos can be marketplaces if structured that way
150+
# We use plugin_count > 1 as heuristic, but the file structure indicates marketplace
149151
if plugin_count > 1:
150152
repo_type = "marketplace"
151153
plugin_path = None # Marketplaces don't have a single plugin path
@@ -168,7 +170,7 @@ def fetch_repo_info(
168170
type=repo_type,
169171
plugin_path=plugin_path,
170172
plugin_count=plugin_count,
171-
plugins=plugins if repo_type == "marketplace" else None,
173+
plugins=plugins, # Always include plugins list for browse command
172174
version=version,
173175
homepage=homepage,
174176
)

0 commit comments

Comments
 (0)