Files
yay/pkg/settings/lua/abort.go
Jo 16479dcaf3 feat: Add AURPostDownload hook (#2856)
* run hooks after source download

* lint

* nitpick: remove event table indirection
2026-06-15 18:10:41 +02:00

50 lines
864 B
Go

package lua
import (
"errors"
glua "github.com/yuin/gopher-lua"
)
type abortError string
func (err abortError) Error() string {
return string(err)
}
func (err abortError) String() string {
return string(err)
}
func (abortError) Type() glua.LValueType {
return glua.LTUserData
}
func abort(state *glua.LState) int {
message := state.CheckString(1)
state.Error(abortError(message), 0)
return 0
}
func luaAbortError(err error) (abortError, bool) {
var apiErr *glua.ApiError
if !errors.As(err, &apiErr) {
return "", false
}
abortErr, ok := apiErr.Object.(abortError)
return abortErr, ok
}
// wrapLuaErr strips the gopher-lua API wrapper from abort errors so callers
// see the clean abort message instead of a Lua traceback.
func wrapLuaErr(err error) error {
if abortErr, ok := luaAbortError(err); ok {
return abortErr
}
return err
}