Skip to content

Commit 32a5b6a

Browse files
committed
fix: only install bundled extensions that actually exist
1 parent e5fad39 commit 32a5b6a

3 files changed

Lines changed: 15 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ All notable changes to the Specify CLI and templates are documented here.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [0.0.97] - 2026-03-05
11+
12+
### Fixed
13+
14+
- fix: only install bundled extensions that actually exist (not just catalog entries)
15+
1016
## [0.0.96] - 2026-03-05
1117

1218
### Fixed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "agentic-sdlc-specify-cli"
3-
version = "0.0.96"
3+
version = "0.0.97"
44
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
55
requires-python = ">=3.11"
66
dependencies = [

src/specify_cli/__init__.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2868,15 +2868,20 @@ def install_bundled_extensions(
28682868
with open(catalog_path) as f:
28692869
catalog_data = json.load(f)
28702870
extensions = catalog_data.get("extensions", {})
2871-
# Get extensions with preinstall: true
2871+
# Get extensions with preinstall: true AND that actually exist in the bundled directory
28722872
bundled_extensions = [
28732873
ext_id
28742874
for ext_id, ext_data in extensions.items()
28752875
if ext_data.get("preinstall", False)
2876+
and (bundled_extensions_dir / ext_id / "extension.yml").exists()
28762877
]
2877-
# Fallback: if no preinstall field found, use all extensions in catalog
2878+
# Fallback: if no preinstall field found, use all extensions in catalog that exist
28782879
if not bundled_extensions:
2879-
bundled_extensions = list(extensions.keys())
2880+
bundled_extensions = [
2881+
ext_id
2882+
for ext_id in extensions.keys()
2883+
if (bundled_extensions_dir / ext_id / "extension.yml").exists()
2884+
]
28802885
except (json.JSONDecodeError, IOError) as e:
28812886
console.print(
28822887
f"[yellow]Warning:[/yellow] Failed to parse catalog.json: {e}"

0 commit comments

Comments
 (0)