sh-ast 0.7.0 → 0.8.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.
- package/README.md +89 -4
- package/dist/analyze/index.d.ts +2 -2
- package/dist/analyze/index.d.ts.map +1 -1
- package/dist/analyze/index.js +1 -1
- package/dist/analyze/index.js.map +1 -1
- package/dist/analyze/resolve-argv0.d.ts +209 -16
- package/dist/analyze/resolve-argv0.d.ts.map +1 -1
- package/dist/analyze/resolve-argv0.js +363 -6
- package/dist/analyze/resolve-argv0.js.map +1 -1
- package/dist/analyze.d.ts +211 -16
- package/dist/errors.d.ts +14 -27
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -28
- package/dist/errors.js.map +1 -1
- package/dist/sh-ast.d.ts +18 -30
- package/dist/syntax-snapshot.d.ts.map +1 -1
- package/dist/syntax-snapshot.js +18 -3
- package/dist/syntax-snapshot.js.map +1 -1
- package/dist/syntax-wire.d.ts +12 -0
- package/dist/syntax-wire.d.ts.map +1 -1
- package/dist/syntax-wire.js +99 -15
- package/dist/syntax-wire.js.map +1 -1
- package/dist/syntax.d.ts +3 -2
- package/dist/syntax.d.ts.map +1 -1
- package/dist/syntax.js +42 -13
- package/dist/syntax.js.map +1 -1
- package/dist/wasm-instance.d.ts +8 -0
- package/dist/wasm-instance.d.ts.map +1 -1
- package/dist/wasm-instance.js +36 -8
- package/dist/wasm-instance.js.map +1 -1
- package/package.json +1 -1
- package/shim/sh-ast.wasm +0 -0
- package/dist/parse-depth-guard.d.ts +0 -11
- package/dist/parse-depth-guard.d.ts.map +0 -1
- package/dist/parse-depth-guard.js +0 -633
- package/dist/parse-depth-guard.js.map +0 -1
|
@@ -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,19 @@ 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 match on its final path segment (see
|
|
374
|
+
* {@link WrapperSpec.names}). A relative path is never matched by segment.
|
|
375
|
+
*/
|
|
252
376
|
function findWrapperSpec(wrappers, text) {
|
|
253
|
-
|
|
377
|
+
const exact = wrappers.find((spec) => spec.names.includes(text));
|
|
378
|
+
if (exact !== undefined || !text.startsWith('/'))
|
|
379
|
+
return exact;
|
|
380
|
+
const name = text.slice(text.lastIndexOf('/') + 1);
|
|
381
|
+
if (name === '')
|
|
382
|
+
return undefined;
|
|
383
|
+
return wrappers.find((spec) => spec.names.includes(name));
|
|
254
384
|
}
|
|
255
385
|
/**
|
|
256
386
|
* Walks `argv` forward from `startIndex`, skipping every word this `spec`
|
|
@@ -401,11 +531,106 @@ function advancePastWrapperOperands(argv, startIndex, spec) {
|
|
|
401
531
|
}
|
|
402
532
|
return { kind: 'truncated' };
|
|
403
533
|
}
|
|
404
|
-
/**
|
|
534
|
+
/** The interpreter entry whose name matches `text`'s final path segment, if any. */
|
|
535
|
+
function findInterpreterSpec(interpreters, text) {
|
|
536
|
+
const name = text.slice(text.lastIndexOf('/') + 1);
|
|
537
|
+
return interpreters.find((spec) => spec.names.includes(name));
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Scans an interpreter's option words from `startIndex` and returns the index
|
|
541
|
+
* of the word that selects the `-c` command string, or `undefined` when none
|
|
542
|
+
* does or no command-string operand follows it — the options ended first (see {@link EmbeddedCommandInterpreterSpec}),
|
|
543
|
+
* a dynamic word made the grammar undecidable, or the words ran out.
|
|
544
|
+
*
|
|
545
|
+
* Mirrors real shell option parsing, verified against bash, dash, zsh, ksh93
|
|
546
|
+
* and mksh: a cluster is read letter by letter; `c` selects the command
|
|
547
|
+
* string; operand-taking letters consume words or the rest of their cluster.
|
|
548
|
+
* Optional operands and option terminators come from the same table, so a
|
|
549
|
+
* following flag remains visible when an operand is omitted, and a terminating
|
|
550
|
+
* letter affects subsequent words without discarding the rest of its cluster.
|
|
551
|
+
*/
|
|
552
|
+
function findCommandStringOption(argv, startIndex, spec) {
|
|
553
|
+
let index = startIndex;
|
|
554
|
+
// The word that selected `-c`; it only counts once an operand follows.
|
|
555
|
+
let selected;
|
|
556
|
+
while (index < argv.length) {
|
|
557
|
+
const word = argv[index];
|
|
558
|
+
// After a selected -c, assume the ordinary reading that this word is
|
|
559
|
+
// its command string. An expansion can instead produce an option that
|
|
560
|
+
// changes command mode; those unusual spellings are a documented limit.
|
|
561
|
+
// Before selection, a dynamic word leaves the option grammar undecidable.
|
|
562
|
+
if (!word.static)
|
|
563
|
+
return selected;
|
|
564
|
+
const text = word.text;
|
|
565
|
+
// Terminator words end options in the modeled grammar, so only a
|
|
566
|
+
// word after them can be the command string; a lone `+` and any
|
|
567
|
+
// non-option word are the operand itself (a script path before `-c`
|
|
568
|
+
// is selected, the command string after).
|
|
569
|
+
const sign = text[0];
|
|
570
|
+
if (text === '--' || text === '-' || spec.optionTerminatorWords?.includes(text) === true) {
|
|
571
|
+
return selected !== undefined && index + 1 < argv.length ? selected : undefined;
|
|
572
|
+
}
|
|
573
|
+
if (text.length < 2 || (sign !== '-' && sign !== '+'))
|
|
574
|
+
return selected;
|
|
575
|
+
if (spec.operandLongOptions?.includes(text) === true) {
|
|
576
|
+
// Even a quoted expansion such as "$@" can become several arguments.
|
|
577
|
+
// Advancing by one syntactic word would guess where options resume.
|
|
578
|
+
const operand = argv.at(index + 1);
|
|
579
|
+
if (operand?.static !== true)
|
|
580
|
+
return undefined;
|
|
581
|
+
index += 2;
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
if (spec.noOperandLongOptions?.includes(text) === true ||
|
|
585
|
+
text.startsWith('--') ||
|
|
586
|
+
text.startsWith('+-')) {
|
|
587
|
+
index += 1;
|
|
588
|
+
continue;
|
|
589
|
+
}
|
|
590
|
+
// Separate operands belong to this cluster in encounter order. Keeping
|
|
591
|
+
// their cursor explicit lets optional operands leave a following flag
|
|
592
|
+
// available to the outer scan without hiding later required operands.
|
|
593
|
+
let nextIndex = index + 1;
|
|
594
|
+
let optionsEnded = false;
|
|
595
|
+
for (let i = 1; i < text.length; i += 1) {
|
|
596
|
+
const letter = text[i];
|
|
597
|
+
if (letter === 'c') {
|
|
598
|
+
if ((sign === '-' || spec.plusCSelectsCommand === true) && selected === undefined) {
|
|
599
|
+
selected = index;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
else if (spec.operandOptions.includes(letter)) {
|
|
603
|
+
if (spec.operandAttachment === 'rest-of-cluster' && i < text.length - 1)
|
|
604
|
+
break;
|
|
605
|
+
const operand = argv.at(nextIndex);
|
|
606
|
+
// Required operands can expand to several fields too; neither their
|
|
607
|
+
// argument count nor an optional operand's boundary can be guessed.
|
|
608
|
+
if (operand?.static !== true)
|
|
609
|
+
return undefined;
|
|
610
|
+
if (spec.optionalOperandOptions?.includes(letter) === true) {
|
|
611
|
+
if (operand.text.startsWith('-') || operand.text.startsWith('+'))
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
nextIndex += 1;
|
|
615
|
+
}
|
|
616
|
+
else if (spec.optionTerminatorLetters?.includes(letter) === true) {
|
|
617
|
+
optionsEnded = true;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
if (optionsEnded) {
|
|
621
|
+
return selected !== undefined && nextIndex < argv.length ? selected : undefined;
|
|
622
|
+
}
|
|
623
|
+
index = nextIndex;
|
|
624
|
+
}
|
|
625
|
+
// Ran out of words: a selected `-c` has no command string (every modeled
|
|
626
|
+
// shell rejects it: "option requires an argument") so nothing is embedded.
|
|
627
|
+
return undefined;
|
|
628
|
+
}
|
|
629
|
+
/** `true` iff every slot in a non-empty array holds a non-empty string, including sparse slots. */
|
|
405
630
|
function isNonEmptyStringArray(value) {
|
|
406
631
|
return (Array.isArray(value) &&
|
|
407
632
|
value.length > 0 &&
|
|
408
|
-
value.every((item) => typeof item === 'string' && item.length > 0));
|
|
633
|
+
Array.from(value).every((item) => typeof item === 'string' && item.length > 0));
|
|
409
634
|
}
|
|
410
635
|
/**
|
|
411
636
|
* Validates one injected {@link WrapperSpec} entry's shape, throwing
|
|
@@ -454,6 +679,82 @@ function validateWrapperSpec(spec, index) {
|
|
|
454
679
|
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.positionalOperandsBeforeCommand must be a non-negative integer when present`);
|
|
455
680
|
}
|
|
456
681
|
}
|
|
682
|
+
/**
|
|
683
|
+
* Validates one injected {@link EmbeddedCommandInterpreterSpec}, throwing
|
|
684
|
+
* {@link ShAnalyzeInvalidWrapperSpecError} on the first problem — the same
|
|
685
|
+
* boundary rule as {@link validateWrapperSpec}, so a malformed JavaScript
|
|
686
|
+
* caller's table fails loudly instead of as a native `TypeError` mid-scan.
|
|
687
|
+
* Every slot in a grammar array must hold a token; sparse holes are invalid
|
|
688
|
+
* entries, not ignorable padding between names or options.
|
|
689
|
+
*/
|
|
690
|
+
function validateInterpreterSpec(spec, index) {
|
|
691
|
+
const context = `embeddedCommandInterpreters[${String(index)}]`;
|
|
692
|
+
// The declared type cannot constrain JavaScript callers. Validate the raw
|
|
693
|
+
// entry before reading any fields, just as their raw field values are checked.
|
|
694
|
+
const entry = spec;
|
|
695
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
696
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context} must be a non-null object`);
|
|
697
|
+
}
|
|
698
|
+
if (!isNonEmptyStringArray(spec.names)) {
|
|
699
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.names must be a non-empty array of non-empty strings`);
|
|
700
|
+
}
|
|
701
|
+
if (spec.names.some((name) => name.includes('/'))) {
|
|
702
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.names must contain basenames without '/'`);
|
|
703
|
+
}
|
|
704
|
+
if (!Array.isArray(spec.operandOptions) ||
|
|
705
|
+
!Array.from(spec.operandOptions).every((item) => typeof item === 'string' && item.length === 1)) {
|
|
706
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandOptions must be an array of single-character strings`);
|
|
707
|
+
}
|
|
708
|
+
if (spec.operandOptions.includes('c')) {
|
|
709
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandOptions must not contain the command selector 'c'`);
|
|
710
|
+
}
|
|
711
|
+
// JavaScript callers can bypass the declared union; validate raw boundary data.
|
|
712
|
+
const attachment = spec.operandAttachment;
|
|
713
|
+
if (attachment !== 'separate-word' && attachment !== 'rest-of-cluster') {
|
|
714
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.operandAttachment must be separate-word or rest-of-cluster`);
|
|
715
|
+
}
|
|
716
|
+
const letterFields = ['optionalOperandOptions', 'optionTerminatorLetters'];
|
|
717
|
+
for (const field of letterFields) {
|
|
718
|
+
const value = spec[field];
|
|
719
|
+
if (value !== undefined &&
|
|
720
|
+
!(Array.isArray(value) &&
|
|
721
|
+
Array.from(value).every((item) => typeof item === 'string' && item.length === 1))) {
|
|
722
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must be an array of single-character strings`);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
if (spec.optionalOperandOptions?.some((letter) => !spec.operandOptions.includes(letter)) === true) {
|
|
726
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionalOperandOptions must be a subset of operandOptions`);
|
|
727
|
+
}
|
|
728
|
+
if (spec.optionTerminatorLetters?.some((letter) => letter === 'c' || spec.operandOptions.includes(letter)) === true) {
|
|
729
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorLetters must contain only no-operand letters other than 'c'`);
|
|
730
|
+
}
|
|
731
|
+
if (spec.optionTerminatorWords !== undefined &&
|
|
732
|
+
!(Array.isArray(spec.optionTerminatorWords) &&
|
|
733
|
+
Array.from(spec.optionTerminatorWords).every((item) => typeof item === 'string' && item.length > 0))) {
|
|
734
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorWords must be an array of non-empty strings`);
|
|
735
|
+
}
|
|
736
|
+
// Exact-token fields cannot intercept the selector whose meaning defines
|
|
737
|
+
// this interpreter grammar, just as operandOptions cannot claim letter c.
|
|
738
|
+
if (spec.optionTerminatorWords?.includes('-c') === true) {
|
|
739
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.optionTerminatorWords must not contain the command selector '-c'`);
|
|
740
|
+
}
|
|
741
|
+
// Exact option spellings have the same representation whether or not
|
|
742
|
+
// they consume an operand; validate both before scanning the table.
|
|
743
|
+
for (const field of ['operandLongOptions', 'noOperandLongOptions']) {
|
|
744
|
+
const value = spec[field];
|
|
745
|
+
if (value !== undefined &&
|
|
746
|
+
!(Array.isArray(value) &&
|
|
747
|
+
Array.from(value).every((item) => typeof item === 'string' && item.length > 0))) {
|
|
748
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must be an array of non-empty strings when present`);
|
|
749
|
+
}
|
|
750
|
+
if (value?.includes('-c') === true) {
|
|
751
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.${field} must not contain the command selector '-c'`);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
if (spec.plusCSelectsCommand !== undefined && typeof spec.plusCSelectsCommand !== 'boolean') {
|
|
755
|
+
throw new ShAnalyzeInvalidWrapperSpecError(`${context}.plusCSelectsCommand must be a boolean when present`);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
457
758
|
/**
|
|
458
759
|
* Follows `site`'s argv0 through zero or more *transparent wrappers* —
|
|
459
760
|
* commands whose own argv0 isn't the command actually run, because they
|
|
@@ -472,7 +773,7 @@ function validateWrapperSpec(spec, index) {
|
|
|
472
773
|
* command) or add their own (e.g. a project's `with-retry` helper) and
|
|
473
774
|
* both directions are followed identically to any built-in entry.
|
|
474
775
|
*
|
|
475
|
-
* **A statically-unknowable word is never guessed through** —
|
|
776
|
+
* **A statically-unknowable word is never guessed through** — four
|
|
476
777
|
* distinct cases all stop the chain immediately at that word rather than
|
|
477
778
|
* falling back to any other guess:
|
|
478
779
|
*
|
|
@@ -493,6 +794,30 @@ function validateWrapperSpec(spec, index) {
|
|
|
493
794
|
* reports `effective: { static: false, reason: 'embedded-command' }`
|
|
494
795
|
* (see {@link WrapperSpec.unresolvableFlags}'s doc comment).
|
|
495
796
|
*
|
|
797
|
+
* 4. The effective command is a shell interpreter
|
|
798
|
+
* ({@link DEFAULT_EMBEDDED_COMMAND_INTERPRETERS}) invoked with `-c` —
|
|
799
|
+
* `bash -c "$x"`, `sudo sh -ec ls` — and the command that runs is
|
|
800
|
+
* inside the string operand. The result is the same
|
|
801
|
+
* `'embedded-command'` shape `env -S` produces: the interpreter word is
|
|
802
|
+
* `chain.at(-2)` and `chainIndices.at(-1)` is the option word that
|
|
803
|
+
* selected `-c`. `bash script.sh`, `bash -e script.sh`, `bash -- -c`
|
|
804
|
+
* and `bash -o c` are not `-c` invocations and resolve to `bash` as
|
|
805
|
+
* before. A dynamic word in option position (`bash "$f" -c x`,
|
|
806
|
+
* `bash -c"$y" x`) is undecidable, so the interpreter stays a static
|
|
807
|
+
* `bash`: `static: true` then means only that the name is known, not that
|
|
808
|
+
* the command is a plain shell invocation. The `-c` string itself is never
|
|
809
|
+
* parsed.
|
|
810
|
+
*
|
|
811
|
+
* Known limits: the table models common option spellings, not a full
|
|
812
|
+
* emulation of each shell's option parser. Unusual spellings can be
|
|
813
|
+
* misclassified in either direction:
|
|
814
|
+
*
|
|
815
|
+
* - Bash/sh single-dash long options after a short option, e.g. `bash -e -rcfile M`.
|
|
816
|
+
* - `ksh -c +c M`, or a dynamic word after `-c` that expands to an option.
|
|
817
|
+
* - mksh's selector-bearing operands in `mksh -o -c M` and `mksh -o +c M`.
|
|
818
|
+
* - A lone `+` before `-c`, e.g. `bash + -c M`.
|
|
819
|
+
* - Zsh grammar switches, e.g. `zsh -o shoptionletters -b -c M`.
|
|
820
|
+
*
|
|
496
821
|
* `VAR=val` shell-assignment prefixes on the `CallExpr` itself
|
|
497
822
|
* (`CommandSite.node.Assigns`, e.g. `FOO=bar rm x`) are always skipped and
|
|
498
823
|
* counted in {@link Argv0Resolution.assignmentsSkipped} — a mechanism
|
|
@@ -507,7 +832,8 @@ function validateWrapperSpec(spec, index) {
|
|
|
507
832
|
* least one argv word; see its doc comment), not a "malformed shell
|
|
508
833
|
* source" case.
|
|
509
834
|
* @throws {@link ShAnalyzeInvalidWrapperSpecError} if
|
|
510
|
-
* `options.transparentWrappers`
|
|
835
|
+
* `options.transparentWrappers` or `options.embeddedCommandInterpreters`
|
|
836
|
+
* contains a malformed entry (see
|
|
511
837
|
* {@link ResolveArgv0Options.transparentWrappers}'s doc comment).
|
|
512
838
|
* @public
|
|
513
839
|
*/
|
|
@@ -519,6 +845,20 @@ export function resolveArgv0(site, options) {
|
|
|
519
845
|
if (options?.transparentWrappers !== undefined) {
|
|
520
846
|
wrappers.forEach(validateWrapperSpec);
|
|
521
847
|
}
|
|
848
|
+
const interpreters = options?.embeddedCommandInterpreters ?? DEFAULT_EMBEDDED_COMMAND_INTERPRETERS;
|
|
849
|
+
if (options?.embeddedCommandInterpreters !== undefined) {
|
|
850
|
+
// JavaScript callers must supply the same array container promised by
|
|
851
|
+
// the public type; null is invalid rather than an implicit opt-out.
|
|
852
|
+
const table = options.embeddedCommandInterpreters;
|
|
853
|
+
if (!Array.isArray(table)) {
|
|
854
|
+
throw new ShAnalyzeInvalidWrapperSpecError('embeddedCommandInterpreters must be an array');
|
|
855
|
+
}
|
|
856
|
+
// Every declared slot must be valid, including sparse holes that would
|
|
857
|
+
// otherwise bypass validation and later surface as native TypeErrors.
|
|
858
|
+
for (const [index, spec] of interpreters.entries()) {
|
|
859
|
+
validateInterpreterSpec(spec, index);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
522
862
|
const assignmentsSkipped = nodeArray(site.node.Assigns).length;
|
|
523
863
|
const argv = site.argv;
|
|
524
864
|
const chain = [];
|
|
@@ -533,8 +873,25 @@ export function resolveArgv0(site, options) {
|
|
|
533
873
|
if (!word.static)
|
|
534
874
|
break;
|
|
535
875
|
const spec = findWrapperSpec(wrappers, word.text);
|
|
536
|
-
if (spec === undefined)
|
|
876
|
+
if (spec === undefined) {
|
|
877
|
+
// No selector can occur before the first option word. Ordinary
|
|
878
|
+
// commands, scripts and dynamic first operands need no interpreter
|
|
879
|
+
// lookup; this preserves the scanner's existing stop conditions.
|
|
880
|
+
const firstOption = argv.at(index + 1);
|
|
881
|
+
if (firstOption?.static !== true ||
|
|
882
|
+
firstOption.text.length < 2 ||
|
|
883
|
+
(!firstOption.text.startsWith('-') && !firstOption.text.startsWith('+')))
|
|
884
|
+
break;
|
|
885
|
+
const interpreter = findInterpreterSpec(interpreters, word.text);
|
|
886
|
+
const optionIndex = interpreter === undefined
|
|
887
|
+
? undefined
|
|
888
|
+
: findCommandStringOption(argv, index + 1, interpreter);
|
|
889
|
+
if (optionIndex !== undefined) {
|
|
890
|
+
chain.push({ static: false, reason: 'embedded-command' });
|
|
891
|
+
chainIndices.push(optionIndex);
|
|
892
|
+
}
|
|
537
893
|
break;
|
|
894
|
+
}
|
|
538
895
|
const result = advancePastWrapperOperands(argv, index + 1, spec);
|
|
539
896
|
if (result.kind === 'truncated')
|
|
540
897
|
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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"}
|