@vzn/vx 0.0.31 → 0.0.32

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": "@vzn/vx",
3
- "version": "0.0.31",
3
+ "version": "0.0.32",
4
4
  "description": "An open, extensible monorepo task runner.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -17,10 +17,10 @@
17
17
  "node": ">=18"
18
18
  },
19
19
  "optionalDependencies": {
20
- "@vzn/vx-linux-x64": "0.0.31",
21
- "@vzn/vx-linux-arm64": "0.0.31",
22
- "@vzn/vx-darwin-x64": "0.0.31",
23
- "@vzn/vx-darwin-arm64": "0.0.31"
20
+ "@vzn/vx-linux-x64": "0.0.32",
21
+ "@vzn/vx-linux-arm64": "0.0.32",
22
+ "@vzn/vx-darwin-x64": "0.0.32",
23
+ "@vzn/vx-darwin-arm64": "0.0.32"
24
24
  },
25
25
  "dependencies": {
26
26
  "@anthropic-ai/sandbox-runtime": "^0.0.76"
@@ -9,7 +9,7 @@
9
9
 
10
10
  import path from 'node:path'
11
11
  import type { WorkspaceConfig } from '../config.js'
12
- import { mark, UserError } from '../util/index.js'
12
+ import { mark, nearest, UserError } from '../util/index.js'
13
13
  import {
14
14
  Cache,
15
15
  noteSchemaReset,
@@ -408,6 +408,30 @@ export async function prepareRun(options: RunOptions, log: Logger): Promise<Prep
408
408
  loadProjects({ ...loadArgs, seeds: 'all', closure: false, staged: projects }),
409
409
  )
410
410
  }
411
+ // An `--exclude-dependencies` name no project declares drops nothing:
412
+ // `=biuld` planned the whole chain and ran it, exit 0 (item 1026). Every
413
+ // other name the user types must resolve; so must this one. After the
414
+ // graph, so a config error (`^biuld` nobody declares) is named first.
415
+ const excludeNames = options.excludeDependencies
416
+ if (Array.isArray(excludeNames) && excludeNames.length > 0) {
417
+ const declared = new Set<string>()
418
+ for (const p of projects.values())
419
+ for (const t of Object.keys(p.config.tasks ?? {})) declared.add(t)
420
+ let unknown = excludeNames.filter((n) => !declared.has(n))
421
+ if (unknown.length > 0 && projects.size < projectsWithConfigs.length) {
422
+ unknown = await declaredNowhere(unknown, () =>
423
+ loadProjects({ ...loadArgs, seeds: 'all', closure: false, staged: projects }),
424
+ )
425
+ }
426
+ if (unknown.length > 0) {
427
+ cache.close()
428
+ const hints = new Set(unknown.flatMap((n) => nearest(n, declared) ?? []))
429
+ const hint = hints.size === 0 ? '' : ` Did you mean ${[...hints].join(', ')}?`
430
+ throw new UserError(
431
+ `--exclude-dependencies names a task no project declares: ${unknown.join(', ')}.${hint}`,
432
+ )
433
+ }
434
+ }
411
435
  // The graph is built; what follows is the plugins' (graph, key,
412
436
  // schedule). Two rows, so a plugin's key stage reads as its own cost
413
437
  // and not as graph building — a lockfile plugin's 1000 stats per run