@ijfw/install 1.2.10 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ijfw/install",
3
- "version": "1.2.10",
3
+ "version": "1.3.0",
4
4
  "description": "One-command installer for IJFW -- the AI efficiency layer. One install, every AI coding agent, zero config.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/install.ps1 CHANGED
@@ -50,8 +50,8 @@ function Invoke-Preflight {
50
50
  if (-not $node -or ([int]($node -replace 'v(\d+)\..*','$1') -lt 18)) {
51
51
  $issues += "Node 18+ unlocks IJFW (found $node). Grab it from https://nodejs.org and we'll pick up where you left off."
52
52
  }
53
- if (-not (Test-Command git)) { $issues += "Install Git for Windows (https://git-scm.com) and rerun -- it bundles everything we need." }
54
- if (-not (Resolve-GitBash)) { $issues += "IJFW needs Git Bash (ships with Git for Windows). Install Git for Windows and rerun -- takes 60 seconds." }
53
+ if (-not (Test-Command git)) { $issues += "IJFW needs git (used to clone the source repo). Install: winget install --id Git.Git -e --source winget" }
54
+ # Bash is no longer required (v1.3.0 -- installer is Node-native).
55
55
  return $issues
56
56
  }
57
57
 
@@ -136,25 +136,18 @@ function Invoke-CloneOrPull($target, $branch) {
136
136
  }
137
137
 
138
138
  function Invoke-InstallScript($target) {
139
- $script = Join-Path $target "scripts\install.sh"
140
- if (-not (Test-Path $script)) { throw "The installer script is not at $script yet. Run the full install from a fresh clone." }
141
- $gitBash = Resolve-GitBash
142
- if (-not $gitBash) { throw "IJFW needs Git Bash to complete setup. Install Git for Windows (includes bash.exe) and rerun." }
143
- # Propagate IJFW_HOME into the bash sub-call so a custom -Dir target lands
144
- # platform configs / sentinels under the user's chosen tree instead of the
145
- # default ~/.ijfw. Without this, .\install.ps1 -Dir D:\custom would scribble
146
- # MCP entries into the user's real ~/.codex / ~/.gemini / ~/.claude pointing
147
- # at the scratch dir.
139
+ # v1.3.0: hand off to the Node-native installer (installer/src/install.js).
140
+ # No more bash dependency. Identical code path on every platform.
141
+ $entry = Join-Path $target "installer\src\install.js"
142
+ if (-not (Test-Path $entry)) { throw "The installer entry is not at $entry. Run the full install from a fresh clone." }
148
143
  $priorIjfwHome = $env:IJFW_HOME
149
144
  $env:IJFW_HOME = $target
150
145
  Push-Location $target
151
146
  try {
152
147
  $env:IJFW_NONINTERACTIVE = if ($env:CI -or $Yes) { "1" } else { "" }
153
- # Let the PS wrapper own the final closer so Merge-Marketplace output
154
- # lands above it. Bash skips its "Full log" line when this is set.
155
148
  $env:IJFW_SKIP_CLOSER = "1"
156
- & $gitBash "./scripts/install.sh"
157
- if ($LASTEXITCODE -ne 0) { throw "scripts/install.sh exited $LASTEXITCODE." }
149
+ & node $entry
150
+ if ($LASTEXITCODE -ne 0) { throw "Node installer exited $LASTEXITCODE." }
158
151
  } finally {
159
152
  Pop-Location
160
153
  Remove-Item Env:\IJFW_SKIP_CLOSER -ErrorAction SilentlyContinue