@@ -289,9 +289,9 @@ Usage:
289289 npx wgsl-gen [options]
290290
291291Options:
292- --input, -i <dir>[: @<alias>] Source directory containing WGSL template files (required)
292+ --input, -i <dir>[| @<alias>] Source directory containing WGSL template files (required)
293293 Can be specified multiple times for multiple directories
294- Optional alias: "dir: @alias" to prefix template names
294+ Optional alias: "dir| @alias" to prefix template names
295295 --output, -o <dir> Output directory for generated files (required)
296296 --generator <n> Code generator to use (default: "static-cpp-literal")
297297 Available: "dynamic", "static-cpp", "static-cpp-literal"
@@ -311,8 +311,9 @@ Examples:
311311 npx wgsl-gen -i ./src -o ./build --include-prefix "myproject/"
312312 npx wgsl-gen -i ./templates -o ./generated --clean --verbose
313313 npx wgsl-gen -i ./templates -o ./generated --watch --debounce 500
314- npx wgsl-gen -i ./common -i ./effects:@fx --output ./generated
315- npx wgsl-gen -i ./base -i ./shaders:@shaders -i ./utils:@utils -o ./cpp
314+ npx wgsl-gen -i ./common -i ./effects|@fx --output ./generated
315+ npx wgsl-gen -i ./base -i ./shaders|@shaders -i ./utils|@utils -o ./cpp
316+ npx wgsl-gen -i "C:\\Projects\\templates" -i "D:\\shared\\effects|@fx" -o ./build
316317` ) ;
317318}
318319
@@ -358,28 +359,33 @@ export function validateOptions(options: CliOptions): string[] {
358359
359360/**
360361 * Parse input directories with optional aliases from CLI arguments
361- * Format: "dir1" or "dir1: @alias1" or ["dir1", "dir2: @alias2"]
362+ * Format: "dir1" or "dir1| @alias1" or ["dir1", "dir2| @alias2"]
362363 */
363364export function parseInputDirectories ( input : string | string [ ] ) : ( { path : string ; alias ?: string } | string ) [ ] {
364365 const inputs = Array . isArray ( input ) ? input : [ input ] ;
365366
366367 return inputs . map ( ( inputStr ) => {
367- const parts = inputStr . split ( ": ") ;
368- if ( parts . length === 1 ) {
368+ const pipeIndex = inputStr . indexOf ( "| ") ;
369+ if ( pipeIndex === - 1 ) {
369370 // No alias specified
370- return parts [ 0 ] ;
371- } else if ( parts . length === 2 ) {
371+ return inputStr ;
372+ } else {
372373 // Alias specified
373- const [ dirPath , alias ] = parts ;
374+ const dirPath = inputStr . substring ( 0 , pipeIndex ) ;
375+ const alias = inputStr . substring ( pipeIndex + 1 ) ;
376+
374377 if ( ! alias . startsWith ( "@" ) ) {
375- throw new Error ( `Invalid alias format: ${ alias } . Aliases must start with '@'. Example: "dir:@alias"` ) ;
378+ throw new Error ( `Invalid alias format: ${ alias } . Aliases must start with '@'. Example: "dir|@alias"` ) ;
379+ }
380+
381+ if ( dirPath . length === 0 ) {
382+ throw new Error ( `Invalid input format: ${ inputStr } . Directory path cannot be empty. Example: "dir|@alias"` ) ;
376383 }
384+
377385 return {
378386 path : dirPath ,
379387 alias : alias ,
380388 } ;
381- } else {
382- throw new Error ( `Invalid input format: ${ inputStr } . Expected "dir" or "dir:@alias"` ) ;
383389 }
384390 } ) ;
385391}
0 commit comments