This adds a new .kill(signal?) method to ShellPromise that allows users to terminate long-running shell processes.
Features:
- Kill processes with default SIGTERM (15)
- Accept numeric signal codes: .kill(9) for SIGKILL
- Accept named signals: .kill("SIGTERM") or .kill("TERM")
- Returns boolean indicating if any processes were killed
- Safe to call on processes that haven't started (returns false)
- Safe to call on processes that already exited (returns false)
- Properly handles pipelines by tracking all active subprocesses
Implementation:
- Added subprocess tracking to Interpreter via active_subprocesses list
- Added registerSubprocess/unregisterSubprocess methods
- Modified Cmd state to register/unregister subprocesses on spawn/cleanup
- Added JavaScript kill method with signal parsing and validation
- Added C++ binding for kill method in ShellInterpreter
- Added comprehensive test suite covering all use cases
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
### What does this PR do?
### How did you verify your code works?
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
- Fixes `$.braces(...)` not working properly on non-ascii inputs
- Switches braces code to use `SmallList` to support more deeply nested
brace expansion
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
### What does this PR do?
Fixes a crash related to pipelines
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
* Do not run tests outside test scope
* Fix tests
* Fix type errors and remove potentially precarious uses of unreachable
* yoops
* Remove all instances of "Ruh roh"
---------
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
* fix#9823
* subshell
* Refactor a bit and add a lot of tests
* delete random code
* make tests pass on windows
* Cleanup
* add sharp test
* Resolve comments
---------
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
* shell: organize imports
* shell: dont allocate when printing errors
* shell: implement $0, $1, argv accessors
* add more tests
* oops need this commit too
* make these logs listen to silencing logs
* expand switch else statements
* align behavior with bash
* this isnt referenced anywhere
* add missing test file
* add another test
* revert this change
* cache utf8 converted version of positionals
* rebase fixes
---------
Co-authored-by: Georgijs Vilums <georgijs.vilums@gmail.com>
* rename conditional -> binary
* Parse if clauses
* `if` works
* Conditional expressions
* Support If clause condition and branches multi-statements
* cond expr tests
* more
* Fix parse tests
* `&` commands
* clean up
* Make it compile for windows
* Fix test
* Remove If/Else/Elif/Then/Fi tokens
* Fix parsing ambiguities
* Resolve some comments
* More tests fix bugs
* Fix parsing and add more tests ported from GNU bash
* Fix `&`on left side of `&&` error message
* leak test fix hopefully
* todo some tests because `wait` is not implemented
* Disable background commands for now
* Resolve additional comments
* Fix merge conflicts
* Fix broken tests from merge
* Add `==` and `!=` and fix parsing bug
* wow
* fix 09401 test failing... forgot to update `this.inlined.len`
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
* make the shell throw by default
* make shell default to throws(true)
* ok
* mv tests
* a
* a
* [autofix.ci] apply automated fixes
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>