@@ -144,20 +144,24 @@ const updateManifestByAgent: Record<AgentPlusBun, AgentModifyManifestFn> = {
144
144
}
145
145
}
146
146
147
- type AgentListDepsFn = ( cwd : string , rootPath : string ) => Promise < string >
147
+ type AgentListDepsFn = (
148
+ agentExecPath : string ,
149
+ cwd : string ,
150
+ rootPath : string
151
+ ) => Promise < string >
148
152
149
153
const lsByAgent : Record < AgentPlusBun , AgentListDepsFn > = {
150
- async bun ( cwd : string , _rootPath : string ) {
154
+ async bun ( agentExecPath : string , cwd : string , _rootPath : string ) {
151
155
try {
152
- return ( await spawn ( 'bun' , [ 'pm' , 'ls' , '--all' ] , { cwd } ) ) . stdout
156
+ return ( await spawn ( agentExecPath , [ 'pm' , 'ls' , '--all' ] , { cwd } ) ) . stdout
153
157
} catch { }
154
158
return ''
155
159
} ,
156
- async npm ( cwd : string , rootPath : string ) {
160
+ async npm ( agentExecPath : string , cwd : string , rootPath : string ) {
157
161
try {
158
162
; (
159
163
await spawn (
160
- 'npm' ,
164
+ agentExecPath ,
161
165
[ 'ls' , '--parseable' , '--include' , 'prod' , '--all' ] ,
162
166
{ cwd }
163
167
)
@@ -167,11 +171,11 @@ const lsByAgent: Record<AgentPlusBun, AgentListDepsFn> = {
167
171
} catch { }
168
172
return ''
169
173
} ,
170
- async pnpm ( cwd : string , rootPath : string ) {
174
+ async pnpm ( agentExecPath : string , cwd : string , rootPath : string ) {
171
175
try {
172
176
return (
173
177
await spawn (
174
- 'pnpm' ,
178
+ agentExecPath ,
175
179
[ 'ls' , '--parseable' , '--prod' , '--depth' , 'Infinity' ] ,
176
180
{ cwd }
177
181
)
@@ -181,14 +185,16 @@ const lsByAgent: Record<AgentPlusBun, AgentListDepsFn> = {
181
185
} catch { }
182
186
return ''
183
187
} ,
184
- async yarn ( cwd : string , _rootPath : string ) {
188
+ async yarn ( agentExecPath : string , cwd : string , _rootPath : string ) {
185
189
try {
186
190
return (
187
- await spawn ( 'yarn' , [ 'info' , '--recursive' , '--name-only' ] , { cwd } )
191
+ await spawn ( agentExecPath , [ 'info' , '--recursive' , '--name-only' ] , {
192
+ cwd
193
+ } )
188
194
) . stdout
189
195
} catch { }
190
196
try {
191
- return ( await spawn ( 'yarn' , [ 'list' , '--prod' ] , { cwd } ) ) . stdout
197
+ return ( await spawn ( agentExecPath , [ 'list' , '--prod' ] , { cwd } ) ) . stdout
192
198
} catch { }
193
199
return ''
194
200
}
@@ -233,7 +239,7 @@ function getDependencyEntries(pkgJson: PackageJsonContent) {
233
239
}
234
240
235
241
async function getWorkspaces (
236
- agent : Agent ,
242
+ agent : AgentPlusBun ,
237
243
pkgPath : string ,
238
244
pkgJson : PackageJsonContent
239
245
) : Promise < string [ ] | undefined > {
@@ -279,7 +285,8 @@ function workspaceToGlobPattern(workspace: string): string {
279
285
}
280
286
281
287
type AddOverridesConfig = {
282
- agent : Agent
288
+ agent : AgentPlusBun
289
+ agentExecPath : string
283
290
lockSrc : string
284
291
manifestEntries : ManifestEntry [ ]
285
292
pkgJson ?: EditablePackageJson | undefined
@@ -296,6 +303,7 @@ type AddOverridesState = {
296
303
async function addOverrides (
297
304
{
298
305
agent,
306
+ agentExecPath,
299
307
lockSrc,
300
308
manifestEntries,
301
309
pkgJson : editablePkgJson ,
@@ -315,7 +323,7 @@ async function addOverrides(
315
323
const isRoot = pkgPath === rootPath
316
324
const thingToScan = isRoot
317
325
? lockSrc
318
- : await lsByAgent [ agent ] ( pkgPath , rootPath )
326
+ : await lsByAgent [ agent ] ( agentExecPath , pkgPath , rootPath )
319
327
const thingScanner = isRoot
320
328
? lockIncludesByAgent [ agent ]
321
329
: depsIncludesByAgent [ agent ]
@@ -421,6 +429,7 @@ async function addOverrides(
421
429
await pEach ( wsPkgJsonPaths , 3 , async wsPkgJsonPath => {
422
430
const { added, updated } = await addOverrides ( {
423
431
agent,
432
+ agentExecPath,
424
433
lockSrc,
425
434
manifestEntries,
426
435
pin,
@@ -535,7 +544,8 @@ export const optimize: CliSubcommand = {
535
544
)
536
545
await addOverrides (
537
546
{
538
- agent : agent === 'bun' ? 'yarn' : agent ,
547
+ agent,
548
+ agentExecPath,
539
549
lockSrc,
540
550
manifestEntries,
541
551
pin,
0 commit comments