mirror of https://github.com/Hilbis/Hilbish
Compare commits
No commits in common. "41e5e3f789b2c3b730e48b1216d80ded6f768f03" and "bfa3b55542e35a4cea7e8acc7d0362c0c92c614d" have entirely different histories.
41e5e3f789
...
bfa3b55542
|
@ -31,8 +31,6 @@ hilbish.run('wc -l', {
|
||||||
### Fixed
|
### Fixed
|
||||||
- Fix ansi attributes causing issues with text when cut off in greenhouse
|
- Fix ansi attributes causing issues with text when cut off in greenhouse
|
||||||
- `exec` command should return if no arg presented
|
- `exec` command should return if no arg presented
|
||||||
- Commanders can now be cancelled by Ctrl-C and wont hang the shell anymore.
|
|
||||||
See [issue 198](https://github.com/Rosettea/Hilbish/issues/198).
|
|
||||||
|
|
||||||
## [2.2.3] - 2024-04-27
|
## [2.2.3] - 2024-04-27
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
> [!TIP]
|
|
||||||
> Check out [Hilbish: Midnight Edition](https://github.com/Rosettea/Hilbish/tree/midnight-edition) if you want to use C Lua, LuaJIT or anything related!
|
|
||||||
|
|
||||||
<img src="./assets/hilbish-logo-and-text.png" width=512><br>
|
<img src="./assets/hilbish-logo-and-text.png" width=512><br>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
🌓 The Moon-powered shell! A comfy and extensible shell for Lua fans! 🌺 ✨
|
🌓 The Moon-powered shell! A comfy and extensible shell for Lua fans! 🌺 ✨
|
||||||
|
|
30
exec.go
30
exec.go
|
@ -8,7 +8,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -354,34 +353,7 @@ func execHandle(bg bool) interp.ExecHandlerFunc {
|
||||||
sinks.Set(rt.StringValue("out"), rt.UserDataValue(stdout.ud))
|
sinks.Set(rt.StringValue("out"), rt.UserDataValue(stdout.ud))
|
||||||
sinks.Set(rt.StringValue("err"), rt.UserDataValue(stderr.ud))
|
sinks.Set(rt.StringValue("err"), rt.UserDataValue(stderr.ud))
|
||||||
|
|
||||||
t := rt.NewThread(l)
|
luaexitcode, err := rt.Call1(l.MainThread(), rt.FunctionValue(cmd), rt.TableValue(luacmdArgs), rt.TableValue(sinks))
|
||||||
sig := make(chan os.Signal)
|
|
||||||
exit := make(chan bool)
|
|
||||||
|
|
||||||
luaexitcode := rt.IntValue(63)
|
|
||||||
var err error
|
|
||||||
go func() {
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
exit <- true
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
signal.Notify(sig, os.Interrupt)
|
|
||||||
select {
|
|
||||||
case <-sig:
|
|
||||||
t.KillContext()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
}()
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
luaexitcode, err = rt.Call1(t, rt.FunctionValue(cmd), rt.TableValue(luacmdArgs), rt.TableValue(sinks))
|
|
||||||
exit <- true
|
|
||||||
}()
|
|
||||||
|
|
||||||
<-exit
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintln(os.Stderr, "Error in command:\n" + err.Error())
|
fmt.Fprintln(os.Stderr, "Error in command:\n" + err.Error())
|
||||||
return interp.NewExitStatus(1)
|
return interp.NewExitStatus(1)
|
||||||
|
|
Loading…
Reference in New Issue