Commit 53b8477
feat: bash compatibility — compound arrays, grep -f, awk getline, jq env/input
## Summary
- **Compound associative array init**: `declare -A m=([k]=v)` now
tokenized as single word; lexer peeks for `[` after `=(` to distinguish
from indexed arrays
- **grep -f pattern-only mode**: fix parse requiring positional pattern
when `-f` is specified; unskip grep -r and grep -f tests with proper VFS
file setup
- **AWK getline**: implement `getline` statement with index-based
iteration; fix ORS and missing-field test expectations
- **JQ env access**: expose bashkit shell vars to process env so jaq's
`env` builtin works; RAII drop guard for cleanup on all return paths
- **String ops, read -r, heredocs** (from prior commit on branch):
prefix/suffix replace, heredoc tests, read builtin backslash handling
## Test plan
- [x] `cargo clippy --all-targets --all-features -- -D warnings` clean
- [x] `cargo test --all-features` — all pass (69 lib + 101 doc)
- [x] `cargo test --test spec_tests` — 13 suites green
- [x] 9 previously-skipped tests unskipped
- [x] ~12 new spec + unit tests added (positive and negative)
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent a7dbdfd commit 53b8477
File tree
9 files changed
+377
-28
lines changed- crates/bashkit
- src
- builtins
- parser
- tests/spec_cases
- awk
- bash
- grep
- jq
- specs
9 files changed
+377
-28
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
484 | 485 | | |
485 | 486 | | |
486 | 487 | | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
487 | 491 | | |
488 | 492 | | |
489 | 493 | | |
| |||
1049 | 1053 | | |
1050 | 1054 | | |
1051 | 1055 | | |
1052 | | - | |
| 1056 | + | |
1053 | 1057 | | |
1054 | 1058 | | |
1055 | 1059 | | |
| |||
1510 | 1514 | | |
1511 | 1515 | | |
1512 | 1516 | | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
1513 | 1521 | | |
1514 | 1522 | | |
1515 | 1523 | | |
1516 | 1524 | | |
1517 | 1525 | | |
1518 | 1526 | | |
1519 | 1527 | | |
| 1528 | + | |
| 1529 | + | |
1520 | 1530 | | |
1521 | 1531 | | |
1522 | 1532 | | |
| |||
2380 | 2390 | | |
2381 | 2391 | | |
2382 | 2392 | | |
| 2393 | + | |
| 2394 | + | |
| 2395 | + | |
| 2396 | + | |
| 2397 | + | |
| 2398 | + | |
| 2399 | + | |
| 2400 | + | |
| 2401 | + | |
2383 | 2402 | | |
2384 | 2403 | | |
2385 | 2404 | | |
| |||
2556 | 2575 | | |
2557 | 2576 | | |
2558 | 2577 | | |
2559 | | - | |
2560 | | - | |
| 2578 | + | |
| 2579 | + | |
| 2580 | + | |
| 2581 | + | |
| 2582 | + | |
| 2583 | + | |
| 2584 | + | |
2561 | 2585 | | |
2562 | 2586 | | |
2563 | 2587 | | |
| |||
2587 | 2611 | | |
2588 | 2612 | | |
2589 | 2613 | | |
| 2614 | + | |
2590 | 2615 | | |
2591 | 2616 | | |
2592 | 2617 | | |
| |||
3024 | 3049 | | |
3025 | 3050 | | |
3026 | 3051 | | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
| 3055 | + | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | + | |
| 3060 | + | |
| 3061 | + | |
| 3062 | + | |
| 3063 | + | |
| 3064 | + | |
| 3065 | + | |
| 3066 | + | |
| 3067 | + | |
| 3068 | + | |
| 3069 | + | |
| 3070 | + | |
| 3071 | + | |
| 3072 | + | |
| 3073 | + | |
| 3074 | + | |
3027 | 3075 | | |
3028 | 3076 | | |
3029 | 3077 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
281 | | - | |
282 | | - | |
| 281 | + | |
| 282 | + | |
283 | 283 | | |
284 | 284 | | |
285 | 285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
25 | 40 | | |
26 | 41 | | |
27 | 42 | | |
| |||
328 | 343 | | |
329 | 344 | | |
330 | 345 | | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
331 | 362 | | |
332 | 363 | | |
333 | 364 | | |
334 | 365 | | |
335 | | - | |
336 | | - | |
337 | | - | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
338 | 373 | | |
339 | 374 | | |
340 | 375 | | |
341 | 376 | | |
342 | 377 | | |
343 | 378 | | |
344 | | - | |
| 379 | + | |
345 | 380 | | |
346 | 381 | | |
347 | 382 | | |
| |||
594 | 629 | | |
595 | 630 | | |
596 | 631 | | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
597 | 653 | | |
598 | 654 | | |
599 | 655 | | |
| |||
787 | 843 | | |
788 | 844 | | |
789 | 845 | | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
790 | 900 | | |
791 | 901 | | |
792 | 902 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
477 | 477 | | |
478 | 478 | | |
479 | 479 | | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
480 | 531 | | |
481 | 532 | | |
482 | 533 | | |
| |||
756 | 807 | | |
757 | 808 | | |
758 | 809 | | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
759 | 830 | | |
760 | 831 | | |
761 | 832 | | |
| |||
958 | 1029 | | |
959 | 1030 | | |
960 | 1031 | | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
961 | 1053 | | |
0 commit comments