swc/crates/swc_bundler/tests/.cache/deno/a67f7c064badc143411c600bceb3c163302747af.ts
2021-11-09 20:42:49 +09:00

62 lines
1.5 KiB
TypeScript

// Loaded from https://deno.land/x/cliffy@v0.12.1/packages/flags/lib/normalize.ts
/**
* Normalize command line arguments.
*
* @param args Command line arguments e.g: `Deno.args`
*/
export function normalize( args: string[] ) {
const normalized = [];
let inLiteral = false;
for ( const arg of args ) {
if ( inLiteral ) {
normalized.push( arg );
} else if ( arg === '--' ) {
inLiteral = true;
normalized.push( arg );
} else if ( arg[ 0 ] === '-' ) {
const isLong = arg[ 1 ] === '-';
if ( arg.includes( '=' ) ) {
const parts = arg.split( '=' );
const flag = parts.shift() as string;
if ( isLong ) {
normalized.push( flag );
} else {
normalizeShortFlags( flag );
}
normalized.push( parts.join( '=' ) );
} else if ( isLong ) {
normalized.push( arg );
} else {
normalizeShortFlags( arg );
}
} else {
normalized.push( arg );
}
}
return normalized;
function normalizeShortFlags( flag: string ): void {
const flags = flag.slice( 1 ).split( '' );
if ( isNaN( flag[ flag.length - 1 ] as any ) ) {
flags.forEach( val => normalized.push( `-${ val }` ) );
} else {
normalized.push( `-${ flags.shift() }` );
normalized.push( flags.join( '' ) );
}
}
}