import type { CompiledSpec } from './compile.ts'; export interface OldStyleArgv { argv: string[]; origins: number[]; cluster: string | null; needsValue: string | null; } /** * Rewrite GNU tar's old option style into ordinary dashed flags. * * tar's first word, when it carries no leading dash, is a cluster of * option letters whose arguments follow it as separate words in letter * order: `tar xzCf dir a.tgz` is `-x -z -C dir -f a.tgz`. Only the first * word reads this way, which is GNU's own rule (`tar -v czf a.tgz f` is * a usage error), so a line that already starts with a dash is returned * untouched. * * Per letter, not one `-xzCf` token, because the getopt cluster rules * cannot express what a tar cluster can: it may hold several * argument-taking letters (`tar cvfb a.tar 20 f`) and it may continue * past one (`tar cfz a.tgz f` gzips, where getopt would read `z` as f's * value). An argument is taken verbatim, dash or not, the way GNU does: * `tar xzf -C ex` looks for an archive literally named `-C`. * * An undeclared letter becomes an undeclared flag token and is refused * by the parser's own scan, so this only reports the one error getopt * cannot see: a value letter with nothing left to consume. Pair options * are not expanded here; no tool spells old style and a two-token option * at once. Mirrors Python's `expand_old_style`. */ export declare function expandOldStyle(cs: CompiledSpec, argv: string[]): OldStyleArgv; //# sourceMappingURL=oldstyle.d.ts.map