sh-ast 0.7.0 → 0.9.0

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.
@@ -59,11 +59,11 @@ export const DEFAULT_TRANSPARENT_WRAPPERS = deepFreeze([
59
59
  // the effective command is `command` itself, regardless of what follows
60
60
  // (`stopsChainFlags`, not `noArgFlags` — see `WrapperSpec.stopsChainFlags`'s
61
61
  // doc comment).
62
- { names: ['command'], noArgFlags: ['-p'], stopsChainFlags: ['-v', '-V'] },
62
+ { names: ['command'], shellBuiltin: true, noArgFlags: ['-p'], stopsChainFlags: ['-v', '-V'] },
63
63
  // `exec [-cl] [-a name] [command [arguments]]` — Bash Reference Manual
64
64
  // §4.1. `-c`/`-l` take no operand; `-a name` supplies argv0 for the
65
65
  // wrapped command and takes `name` as its operand.
66
- { names: ['exec'], noArgFlags: ['-c', '-l'], argFlags: ['-a'] },
66
+ { names: ['exec'], shellBuiltin: true, noArgFlags: ['-c', '-l'], argFlags: ['-a'] },
67
67
  // `env [-i0v] [-u name] [-C dir] [name=value]... [utility
68
68
  // [argument...]]` — POSIX `env` (`-i`) plus GNU coreutils env(1)'s
69
69
  // commonly documented long/short forms. `VAR=val` operands preceding the
@@ -162,6 +162,125 @@ export const DEFAULT_TRANSPARENT_WRAPPERS = deepFreeze([
162
162
  argFlags: ['-g', '-p', '-u'],
163
163
  },
164
164
  ]);
165
+ /**
166
+ * Bash's operand-free single-dash long options from the 5.3.9 and Apple 3.2.57
167
+ * help listings. Their internal letters must not select `-c` or consume an
168
+ * option-name operand. Bash-backed `sh` needs the same spelling recognition.
169
+ */
170
+ const BASH_SINGLE_DASH_FLAGS = [
171
+ '-debug',
172
+ '-debugger',
173
+ '-dump-po-strings',
174
+ '-dump-strings',
175
+ '-help',
176
+ '-login',
177
+ '-noediting',
178
+ '-noprofile',
179
+ '-norc',
180
+ '-posix',
181
+ '-pretty-print',
182
+ '-protected',
183
+ '-restricted',
184
+ '-verbose',
185
+ '-version',
186
+ '-wordexp',
187
+ ];
188
+ /**
189
+ * `sh-ast/analyze`'s default {@link EmbeddedCommandInterpreterSpec} table:
190
+ * the shells whose `-c` option makes {@link resolveArgv0} report
191
+ * `'embedded-command'`. Each entry's option grammar is hand-derived from the
192
+ * cited manual. Basic clusters and required operands were cross-checked on
193
+ * Linux bash 5.2.21, dash 0.5.12, zsh 5.9, ksh93u+m 1.0.8 and mksh R59.
194
+ * Long-option, termination and omitted-operand cases were checked on macOS
195
+ * bash 5.3.9 and 3.2.57 (also `/bin/sh`), Apple dash-16, zsh 5.9 and ksh93u+
196
+ * AJM 2012-08-01. Omitted `-o`/`+o` operands before another signed option
197
+ * were confirmed only on that ksh93u+ build, not ksh93u+m or mksh. Builds can
198
+ * differ: macOS's ksh93u+ differs from the cited 93u+m for `ksh -o c "echo X"`.
199
+ * The `sh` entry also models bash's long options because `sh` can be bash.
200
+ * Named options that change the option grammar itself (such as zsh's
201
+ * `shoptionletters`) are not interpreted; a custom table is needed for that
202
+ * grammar. It is data, not policy:
203
+ * it names no dangerous commands and a caller can replace or extend it via
204
+ * {@link ResolveArgv0Options.embeddedCommandInterpreters}; an empty array
205
+ * restores the behavior in which an interpreter is an ordinary effective
206
+ * command.
207
+ *
208
+ * Frozen, including each entry and its arrays.
209
+ *
210
+ * @see https://www.gnu.org/software/bash/manual/bash.html#Invoking-Bash — bash
211
+ * @see https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html — POSIX `sh`
212
+ * @see https://man7.org/linux/man-pages/man1/dash.1.html — dash(1)
213
+ * @see https://zsh.sourceforge.io/Doc/Release/Invocation-and-Startup.html — zsh
214
+ * @see https://github.com/ksh93/ksh — ksh93u+m `sh(1)`
215
+ * @see https://man.mirbsd.org/mksh.1 — mksh(1)
216
+ * @public
217
+ */
218
+ export const DEFAULT_EMBEDDED_COMMAND_INTERPRETERS = deepFreeze([
219
+ // bash(1) INVOCATION/OPTIONS: `-o option` and `-O shopt_option` each take
220
+ // the next word, and in a cluster the operands are taken in order from
221
+ // the following words (`-oc errexit 'cmd'` runs `cmd`). `--rcfile` and
222
+ // `--init-file` take a file. `+c` is accepted as `-c`.
223
+ {
224
+ names: ['bash'],
225
+ operandOptions: ['o', 'O'],
226
+ operandAttachment: 'separate-word',
227
+ operandLongOptions: ['--rcfile', '--init-file', '-rcfile', '-init-file'],
228
+ noOperandLongOptions: BASH_SINGLE_DASH_FLAGS,
229
+ plusCSelectsCommand: true,
230
+ },
231
+ // POSIX `sh`: `-o option` is the only portable operand option. `sh` is
232
+ // bash, dash or another shell depending on the system, so this entry
233
+ // models the superset: `-O` and bash's `--rcfile`/`--init-file` take an
234
+ // operand so that a bash-backed `sh -O extglob -c` or `sh --rcfile f -c`
235
+ // is not misread (dash rejects them, and rejecting means nothing runs).
236
+ {
237
+ names: ['sh'],
238
+ operandOptions: ['o', 'O'],
239
+ operandAttachment: 'separate-word',
240
+ operandLongOptions: ['--rcfile', '--init-file', '-rcfile', '-init-file'],
241
+ noOperandLongOptions: BASH_SINGLE_DASH_FLAGS,
242
+ plusCSelectsCommand: true,
243
+ },
244
+ // dash(1): `-o option` takes the next word, even within a cluster.
245
+ {
246
+ names: ['dash'],
247
+ operandOptions: ['o'],
248
+ operandAttachment: 'separate-word',
249
+ plusCSelectsCommand: true,
250
+ },
251
+ // zsh 5.9: `-o option` takes an attached or separate name; --emulate
252
+ // and +-emulate consume a mode. Native -b/+b end options after their
253
+ // cluster; a stacked '-' and the whole words '+' / '+-' also end them.
254
+ {
255
+ names: ['zsh'],
256
+ operandOptions: ['o'],
257
+ operandAttachment: 'rest-of-cluster',
258
+ operandLongOptions: ['--emulate', '+-emulate'],
259
+ optionTerminatorLetters: ['b', '-'],
260
+ optionTerminatorWords: ['+', '+-'],
261
+ plusCSelectsCommand: true,
262
+ },
263
+ // ksh93u+ AJM 2012-08-01: a separate -o/+o name is omitted when the
264
+ // next word starts with either sign. Attached names still consume the
265
+ // rest of the cluster. +c disables command mode rather than selecting a
266
+ // string (Apple 93u+ and Linux 93u+m); clearing a prior -c is unmodeled.
267
+ // Apple -R consumes a cross-reference database path; Linux rejects -R.
268
+ {
269
+ names: ['ksh', 'ksh93'],
270
+ operandOptions: ['o', 'R'],
271
+ operandAttachment: 'rest-of-cluster',
272
+ optionalOperandOptions: ['o'],
273
+ optionTerminatorWords: ['+'],
274
+ plusCSelectsCommand: false,
275
+ },
276
+ // mksh R59: -o names attach to the cluster or consume the next word;
277
+ // +c does not select a command string. No omitted-operand rule is assumed.
278
+ {
279
+ names: ['mksh'],
280
+ operandOptions: ['o'],
281
+ operandAttachment: 'rest-of-cluster',
282
+ },
283
+ ]);
165
284
  /** `true` iff `text` is shaped like a shell assignment operand (`NAME=...`). */
166
285
  function isAssignmentShapedText(text) {
167
286
  return /^[A-Za-z_][A-Za-z0-9_]*=/.test(text);
@@ -249,8 +368,20 @@ function matchShortFlagCluster(text, spec) {
249
368
  // cluster (e.g. `-iv`).
250
369
  return 'one';
251
370
  }
371
+ /**
372
+ * The wrapper entry that recognizes `text`: an exact `names` match, else, for
373
+ * an absolute path only, a non-builtin match on its final path segment (see
374
+ * {@link WrapperSpec.names}). Relative paths and shell builtins never use
375
+ * segment matching; the bare-command early exit avoids all path scanning.
376
+ */
252
377
  function findWrapperSpec(wrappers, text) {
253
- return wrappers.find((spec) => spec.names.includes(text));
378
+ const exact = wrappers.find((spec) => spec.names.includes(text));
379
+ if (exact !== undefined || !text.startsWith('/'))
380
+ return exact;
381
+ const name = text.slice(text.lastIndexOf('/') + 1);
382
+ if (name === '')
383
+ return undefined;
384
+ return wrappers.find((spec) => spec.shellBuiltin !== true && spec.names.includes(name));
254
385
  }
255
386
  /**
256
387
  * Walks `argv` forward from `startIndex`, skipping every word this `spec`
@@ -401,11 +532,106 @@ function advancePastWrapperOperands(argv, startIndex, spec) {
401
532
  }
402
533
  return { kind: 'truncated' };
403
534
  }
404
- /** `true` iff `value` is a non-empty array of non-empty strings. */
535
+ /** The interpreter entry whose name matches `text`'s final path segment, if any. */
536
+ function findInterpreterSpec(interpreters, text) {
537
+ const name = text.slice(text.lastIndexOf('/') + 1);
538
+ return interpreters.find((spec) => spec.names.includes(name));
539
+ }
540
+ /**
541
+ * Scans an interpreter's option words from `startIndex` and returns the index
542
+ * of the word that selects the `-c` command string, or `undefined` when none
543
+ * does or no command-string operand follows it — the options ended first (see {@link EmbeddedCommandInterpreterSpec}),
544
+ * a dynamic word made the grammar undecidable, or the words ran out.
545
+ *
546
+ * Mirrors real shell option parsing, verified against bash, dash, zsh, ksh93
547
+ * and mksh: a cluster is read letter by letter; `c` selects the command
548
+ * string; operand-taking letters consume words or the rest of their cluster.
549
+ * Optional operands and option terminators come from the same table, so a
550
+ * following flag remains visible when an operand is omitted, and a terminating
551
+ * letter affects subsequent words without discarding the rest of its cluster.
552
+ */
553
+ function findCommandStringOption(argv, startIndex, spec) {
554
+ let index = startIndex;
555
+ // The word that selected `-c`; it only counts once an operand follows.
556
+ let selected;
557
+ while (index < argv.length) {
558
+ const word = argv[index];
559
+ // After a selected -c, assume the ordinary reading that this word is
560
+ // its command string. An expansion can instead produce an option that
561
+ // changes command mode; those unusual spellings are a documented limit.
562
+ // Before selection, a dynamic word leaves the option grammar undecidable.
563
+ if (!word.static)
564
+ return selected;
565
+ const text = word.text;
566
+ // Terminator words end options in the modeled grammar, so only a
567
+ // word after them can be the command string; a lone `+` and any
568
+ // non-option word are the operand itself (a script path before `-c`
569
+ // is selected, the command string after).
570
+ const sign = text[0];
571
+ if (text === '--' || text === '-' || spec.optionTerminatorWords?.includes(text) === true) {
572
+ return selected !== undefined && index + 1 < argv.length ? selected : undefined;
573
+ }
574
+ if (text.length < 2 || (sign !== '-' && sign !== '+'))
575
+ return selected;
576
+ if (spec.operandLongOptions?.includes(text) === true) {
577
+ // Even a quoted expansion such as "$@" can become several arguments.
578
+ // Advancing by one syntactic word would guess where options resume.
579
+ const operand = argv.at(index + 1);
580
+ if (operand?.static !== true)
581
+ return undefined;
582
+ index += 2;
583
+ continue;
584
+ }
585
+ if (spec.noOperandLongOptions?.includes(text) === true ||
586
+ text.startsWith('--') ||
587
+ text.startsWith('+-')) {
588
+ index += 1;
589
+ continue;
590
+ }
591
+ // Separate operands belong to this cluster in encounter order. Keeping
592
+ // their cursor explicit lets optional operands leave a following flag
593
+ // available to the outer scan without hiding later required operands.
594
+ let nextIndex = index + 1;
595
+ let optionsEnded = false;
596
+ for (let i = 1; i < text.length; i += 1) {
597
+ const letter = text[i];
598
+ if (letter === 'c') {
599
+ if ((sign === '-' || spec.plusCSelectsCommand === true) && selected === undefined) {
600
+ selected = index;
601
+ }
602
+ }
603
+ else if (spec.operandOptions.includes(letter)) {
604
+ if (spec.operandAttachment === 'rest-of-cluster' && i < text.length - 1)
605
+ break;
606
+ const operand = argv.at(nextIndex);
607
+ // Required operands can expand to several fields too; neither their
608
+ // argument count nor an optional operand's boundary can be guessed.
609
+ if (operand?.static !== true)
610
+ return undefined;
611
+ if (spec.optionalOperandOptions?.includes(letter) === true) {
612
+ if (operand.text.startsWith('-') || operand.text.startsWith('+'))
613
+ continue;
614
+ }
615
+ nextIndex += 1;
616
+ }
617
+ else if (spec.optionTerminatorLetters?.includes(letter) === true) {
618
+ optionsEnded = true;
619
+ }
620
+ }
621
+ if (optionsEnded) {
622
+ return selected !== undefined && nextIndex < argv.length ? selected : undefined;
623
+ }
624
+ index = nextIndex;
625
+ }
626
+ // Ran out of words: a selected `-c` has no command string (every modeled
627
+ // shell rejects it: "option requires an argument") so nothing is embedded.
628
+ return undefined;
629
+ }
630
+ /** `true` iff every slot in a non-empty array holds a non-empty string, including sparse slots. */
405
631
  function isNonEmptyStringArray(value) {
406
632
  return (Array.isArray(value) &&
407
633
  value.length > 0 &&
408
- value.every((item) => typeof item === 'string' && item.length > 0));
634
+ Array.from(value).every((item) => typeof item === 'string' && item.length > 0));
409
635
  }
410
636
  /**
411
637
  * Validates one injected {@link WrapperSpec} entry's shape, throwing
@@ -436,6 +662,9 @@ function validateWrapperSpec(spec, index) {
436
662
  typeof spec.skipAssignmentOperands !== 'boolean') {
437
663
  throw new ShAnalyzeInvalidWrapperSpecError(`${context}.skipAssignmentOperands must be a boolean when present`);
438
664
  }
665
+ if (spec.shellBuiltin !== undefined && typeof spec.shellBuiltin !== 'boolean') {
666
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.shellBuiltin must be a boolean when present`);
667
+ }
439
668
  // JavaScript callers can bypass the declared union; validate raw boundary data.
440
669
  const assignmentOperands = spec.assignmentOperands;
441
670
  if (assignmentOperands !== undefined &&
@@ -454,6 +683,82 @@ function validateWrapperSpec(spec, index) {
454
683
  throw new ShAnalyzeInvalidWrapperSpecError(`${context}.positionalOperandsBeforeCommand must be a non-negative integer when present`);
455
684
  }
456
685
  }
686
+ /**
687
+ * Validates one injected {@link EmbeddedCommandInterpreterSpec}, throwing
688
+ * {@link ShAnalyzeInvalidWrapperSpecError} on the first problem — the same
689
+ * boundary rule as {@link validateWrapperSpec}, so a malformed JavaScript
690
+ * caller's table fails loudly instead of as a native `TypeError` mid-scan.
691
+ * Every slot in a grammar array must hold a token; sparse holes are invalid
692
+ * entries, not ignorable padding between names or options.
693
+ */
694
+ function validateInterpreterSpec(spec, index) {
695
+ const context = `embeddedCommandInterpreters[${String(index)}]`;
696
+ // The declared type cannot constrain JavaScript callers. Validate the raw
697
+ // entry before reading any fields, just as their raw field values are checked.
698
+ const entry = spec;
699
+ if (typeof entry !== 'object' || entry === null) {
700
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context} must be a non-null object`);
701
+ }
702
+ if (!isNonEmptyStringArray(spec.names)) {
703
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.names must be a non-empty array of non-empty strings`);
704
+ }
705
+ if (spec.names.some((name) => name.includes('/'))) {
706
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.names must contain basenames without '/'`);
707
+ }
708
+ if (!Array.isArray(spec.operandOptions) ||
709
+ !Array.from(spec.operandOptions).every((item) => typeof item === 'string' && item.length === 1)) {
710
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandOptions must be an array of single-character strings`);
711
+ }
712
+ if (spec.operandOptions.includes('c')) {
713
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandOptions must not contain the command selector 'c'`);
714
+ }
715
+ // JavaScript callers can bypass the declared union; validate raw boundary data.
716
+ const attachment = spec.operandAttachment;
717
+ if (attachment !== 'separate-word' && attachment !== 'rest-of-cluster') {
718
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandAttachment must be separate-word or rest-of-cluster`);
719
+ }
720
+ const letterFields = ['optionalOperandOptions', 'optionTerminatorLetters'];
721
+ for (const field of letterFields) {
722
+ const value = spec[field];
723
+ if (value !== undefined &&
724
+ !(Array.isArray(value) &&
725
+ Array.from(value).every((item) => typeof item === 'string' && item.length === 1))) {
726
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must be an array of single-character strings`);
727
+ }
728
+ }
729
+ if (spec.optionalOperandOptions?.some((letter) => !spec.operandOptions.includes(letter)) === true) {
730
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionalOperandOptions must be a subset of operandOptions`);
731
+ }
732
+ if (spec.optionTerminatorLetters?.some((letter) => letter === 'c' || spec.operandOptions.includes(letter)) === true) {
733
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorLetters must contain only no-operand letters other than 'c'`);
734
+ }
735
+ if (spec.optionTerminatorWords !== undefined &&
736
+ !(Array.isArray(spec.optionTerminatorWords) &&
737
+ Array.from(spec.optionTerminatorWords).every((item) => typeof item === 'string' && item.length > 0))) {
738
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorWords must be an array of non-empty strings`);
739
+ }
740
+ // Exact-token fields cannot intercept the selector whose meaning defines
741
+ // this interpreter grammar, just as operandOptions cannot claim letter c.
742
+ if (spec.optionTerminatorWords?.includes('-c') === true) {
743
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorWords must not contain the command selector '-c'`);
744
+ }
745
+ // Exact option spellings have the same representation whether or not
746
+ // they consume an operand; validate both before scanning the table.
747
+ for (const field of ['operandLongOptions', 'noOperandLongOptions']) {
748
+ const value = spec[field];
749
+ if (value !== undefined &&
750
+ !(Array.isArray(value) &&
751
+ Array.from(value).every((item) => typeof item === 'string' && item.length > 0))) {
752
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must be an array of non-empty strings when present`);
753
+ }
754
+ if (value?.includes('-c') === true) {
755
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must not contain the command selector '-c'`);
756
+ }
757
+ }
758
+ if (spec.plusCSelectsCommand !== undefined && typeof spec.plusCSelectsCommand !== 'boolean') {
759
+ throw new ShAnalyzeInvalidWrapperSpecError(`${context}.plusCSelectsCommand must be a boolean when present`);
760
+ }
761
+ }
457
762
  /**
458
763
  * Follows `site`'s argv0 through zero or more *transparent wrappers* —
459
764
  * commands whose own argv0 isn't the command actually run, because they
@@ -472,7 +777,7 @@ function validateWrapperSpec(spec, index) {
472
777
  * command) or add their own (e.g. a project's `with-retry` helper) and
473
778
  * both directions are followed identically to any built-in entry.
474
779
  *
475
- * **A statically-unknowable word is never guessed through** — three
780
+ * **A statically-unknowable word is never guessed through** — four
476
781
  * distinct cases all stop the chain immediately at that word rather than
477
782
  * falling back to any other guess:
478
783
  *
@@ -493,6 +798,30 @@ function validateWrapperSpec(spec, index) {
493
798
  * reports `effective: { static: false, reason: 'embedded-command' }`
494
799
  * (see {@link WrapperSpec.unresolvableFlags}'s doc comment).
495
800
  *
801
+ * 4. The effective command is a shell interpreter
802
+ * ({@link DEFAULT_EMBEDDED_COMMAND_INTERPRETERS}) invoked with `-c` —
803
+ * `bash -c "$x"`, `sudo sh -ec ls` — and the command that runs is
804
+ * inside the string operand. The result is the same
805
+ * `'embedded-command'` shape `env -S` produces: the interpreter word is
806
+ * `chain.at(-2)` and `chainIndices.at(-1)` is the option word that
807
+ * selected `-c`. `bash script.sh`, `bash -e script.sh`, `bash -- -c`
808
+ * and `bash -o c` are not `-c` invocations and resolve to `bash` as
809
+ * before. A dynamic word in option position (`bash "$f" -c x`,
810
+ * `bash -c"$y" x`) is undecidable, so the interpreter stays a static
811
+ * `bash`: `static: true` then means only that the name is known, not that
812
+ * the command is a plain shell invocation. The `-c` string itself is never
813
+ * parsed.
814
+ *
815
+ * Known limits: the table models common option spellings, not a full
816
+ * emulation of each shell's option parser. Unusual spellings can be
817
+ * misclassified in either direction:
818
+ *
819
+ * - Bash/sh single-dash long options after a short option, e.g. `bash -e -rcfile M`.
820
+ * - `ksh -c +c M`, or a dynamic word after `-c` that expands to an option.
821
+ * - mksh's selector-bearing operands in `mksh -o -c M` and `mksh -o +c M`.
822
+ * - A lone `+` before `-c`, e.g. `bash + -c M`.
823
+ * - Zsh grammar switches, e.g. `zsh -o shoptionletters -b -c M`.
824
+ *
496
825
  * `VAR=val` shell-assignment prefixes on the `CallExpr` itself
497
826
  * (`CommandSite.node.Assigns`, e.g. `FOO=bar rm x`) are always skipped and
498
827
  * counted in {@link Argv0Resolution.assignmentsSkipped} — a mechanism
@@ -507,7 +836,8 @@ function validateWrapperSpec(spec, index) {
507
836
  * least one argv word; see its doc comment), not a "malformed shell
508
837
  * source" case.
509
838
  * @throws {@link ShAnalyzeInvalidWrapperSpecError} if
510
- * `options.transparentWrappers` contains a malformed entry (see
839
+ * `options.transparentWrappers` or `options.embeddedCommandInterpreters`
840
+ * contains a malformed entry (see
511
841
  * {@link ResolveArgv0Options.transparentWrappers}'s doc comment).
512
842
  * @public
513
843
  */
@@ -519,6 +849,20 @@ export function resolveArgv0(site, options) {
519
849
  if (options?.transparentWrappers !== undefined) {
520
850
  wrappers.forEach(validateWrapperSpec);
521
851
  }
852
+ const interpreters = options?.embeddedCommandInterpreters ?? DEFAULT_EMBEDDED_COMMAND_INTERPRETERS;
853
+ if (options?.embeddedCommandInterpreters !== undefined) {
854
+ // JavaScript callers must supply the same array container promised by
855
+ // the public type; null is invalid rather than an implicit opt-out.
856
+ const table = options.embeddedCommandInterpreters;
857
+ if (!Array.isArray(table)) {
858
+ throw new ShAnalyzeInvalidWrapperSpecError('embeddedCommandInterpreters must be an array');
859
+ }
860
+ // Every declared slot must be valid, including sparse holes that would
861
+ // otherwise bypass validation and later surface as native TypeErrors.
862
+ for (const [index, spec] of interpreters.entries()) {
863
+ validateInterpreterSpec(spec, index);
864
+ }
865
+ }
522
866
  const assignmentsSkipped = nodeArray(site.node.Assigns).length;
523
867
  const argv = site.argv;
524
868
  const chain = [];
@@ -533,8 +877,25 @@ export function resolveArgv0(site, options) {
533
877
  if (!word.static)
534
878
  break;
535
879
  const spec = findWrapperSpec(wrappers, word.text);
536
- if (spec === undefined)
880
+ if (spec === undefined) {
881
+ // No selector can occur before the first option word. Ordinary
882
+ // commands, scripts and dynamic first operands need no interpreter
883
+ // lookup; this preserves the scanner's existing stop conditions.
884
+ const firstOption = argv.at(index + 1);
885
+ if (firstOption?.static !== true ||
886
+ firstOption.text.length < 2 ||
887
+ (!firstOption.text.startsWith('-') && !firstOption.text.startsWith('+')))
888
+ break;
889
+ const interpreter = findInterpreterSpec(interpreters, word.text);
890
+ const optionIndex = interpreter === undefined
891
+ ? undefined
892
+ : findCommandStringOption(argv, index + 1, interpreter);
893
+ if (optionIndex !== undefined) {
894
+ chain.push({ static: false, reason: 'embedded-command' });
895
+ chainIndices.push(optionIndex);
896
+ }
537
897
  break;
898
+ }
538
899
  const result = advancePastWrapperOperands(argv, index + 1, spec);
539
900
  if (result.kind === 'truncated')
540
901
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-argv0.js","sourceRoot":"","sources":["../../src/analyze/resolve-argv0.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-argv0.js","sourceRoot":"","sources":["../../src/analyze/resolve-argv0.ts"],"names":[],"mappings":"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"}