@@ -21,7 +21,7 @@ import { runWizard } from './commands/wizard.ts'
2121import { timedSpinner } from './core/formatting.ts'
2222import { getProjectState , hasCompletedWizard , isOutdated , readConfig , semverGt } from './core/index.ts'
2323import { readPackageJsonSafe } from './core/package-json.ts'
24- import { parseSkillInput } from './core/prefix.ts'
24+ import { parseNpmPackageInputs } from './core/prefix.ts'
2525import { COMMA_OR_WHITESPACE_RE , VERSION_RANGE_PREFIX_RE } from './core/regex.ts'
2626import { iterateSkills } from './core/skills.ts'
2727import { fetchLatestVersion , fetchNpmRegistryMeta } from './sources/index.ts'
@@ -60,19 +60,6 @@ function deprecatedForwarder(
6060
6161// ── Subcommands (lazy-loaded) ──
6262
63- function toPackageNames ( tokens : string [ ] ) : string [ ] | null {
64- const names : string [ ] = [ ]
65- for ( const token of tokens ) {
66- const source = parseSkillInput ( token )
67- if ( source . type !== 'npm' && source . type !== 'bare' ) {
68- p . log . error ( `${ token } is not an npm package. Install it with \`skilld add ${ token } \`.` )
69- return null
70- }
71- names . push ( source . package )
72- }
73- return names
74- }
75-
7663const SUBCOMMAND_NAMES = [ 'add' , 'eject' , 'update' , 'info' , 'list' , 'config' , 'remove' , 'install' , 'uninstall' , 'search' , 'cache' , 'validate' , 'assemble' , 'setup' , 'prepare' , 'author' , 'publish' , 'upload' , 'login' , 'logout' , 'whoami' , 'pull' ]
7764
7865// ── Main command ──
@@ -304,10 +291,12 @@ const main = defineCommand({
304291 p . log . warn ( 'No packages entered' )
305292 continue
306293 }
307- const names = toPackageNames ( input . split ( COMMA_OR_WHITESPACE_RE ) . map ( s => s . trim ( ) ) . filter ( Boolean ) )
308- if ( ! names )
294+ const parsed = parseNpmPackageInputs ( input . split ( COMMA_OR_WHITESPACE_RE ) . map ( s => s . trim ( ) ) . filter ( Boolean ) )
295+ if ( parsed . _tag === 'Err' ) {
296+ p . log . error ( `${ parsed . input } is not an npm package. Install it with \`skilld add ${ parsed . input } \`.` )
309297 continue
310- selected = names
298+ }
299+ selected = parsed . packageSpecs
311300 if ( selected . length === 0 ) {
312301 p . log . warn ( 'No valid packages entered' )
313302 continue
@@ -555,10 +544,12 @@ const main = defineCommand({
555544 } ) )
556545 if ( ! input )
557546 return
558- const names = toPackageNames ( input . split ( COMMA_OR_WHITESPACE_RE ) . map ( s => s . trim ( ) ) . filter ( Boolean ) )
559- if ( ! names )
547+ const parsed = parseNpmPackageInputs ( input . split ( COMMA_OR_WHITESPACE_RE ) . map ( s => s . trim ( ) ) . filter ( Boolean ) )
548+ if ( parsed . _tag === 'Err' ) {
549+ p . log . error ( `${ parsed . input } is not an npm package. Install it with \`skilld add ${ parsed . input } \`.` )
560550 return
561- selected = names
551+ }
552+ selected = parsed . packageSpecs
562553 if ( selected . length === 0 )
563554 return
564555 }
0 commit comments