summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go')
-rw-r--r--vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go87
1 files changed, 0 insertions, 87 deletions
diff --git a/vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go b/vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go
deleted file mode 100644
index 7b07d851d..000000000
--- a/vendor/codeberg.org/gruf/go-ffmpreg/wasm/run.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package wasm
-
-import (
- "context"
- "io"
- "unsafe"
-
- "github.com/tetratelabs/wazero"
- "github.com/tetratelabs/wazero/sys"
-)
-
-// Args encompasses a common set of
-// configuration options often passed to
-// wazero.Runtime on module instantiation.
-type Args struct {
-
- // Program name, depending on the
- // module being run this may or may
- // not be necessary.
- Name string
-
- // Optional further module configuration function.
- // (e.g. to mount filesystem dir, set env vars, etc).
- Config func(wazero.ModuleConfig) wazero.ModuleConfig
-
- // Standard FDs.
- Stdin io.Reader
- Stdout io.Writer
- Stderr io.Writer
-
- // CLI args.
- Args []string
-}
-
-// Run will run given compiled WebAssembly module
-// within the given runtime, with given arguments.
-// Returns the exit code, or error.
-func Run(
- ctx context.Context,
- runtime wazero.Runtime,
- module wazero.CompiledModule,
- args Args,
-) (rc uint32, err error) {
-
- // Prefix arguments with module name.
- cargs := make([]string, len(args.Args)+1)
- cargs[0] = args.Name
- copy(cargs[1:], args.Args)
-
- // Prepare new module configuration.
- modcfg := wazero.NewModuleConfig()
- modcfg = modcfg.WithArgs(cargs...)
- modcfg = modcfg.WithStdin(args.Stdin)
- modcfg = modcfg.WithStdout(args.Stdout)
- modcfg = modcfg.WithStderr(args.Stderr)
-
- if args.Config != nil {
- // Pass through config fn.
- modcfg = args.Config(modcfg)
- }
-
- // Enable setjmp longjmp.
- ctx = withSetjmpLongjmp(ctx)
-
- // Instantiate the module from precompiled wasm module data.
- mod, err := runtime.InstantiateModule(ctx, module, modcfg)
-
- if !isNil(mod) {
- // Ensure closed.
- _ = mod.Close(ctx)
- }
-
- // Try extract exit code.
- switch err := err.(type) {
- case *sys.ExitError:
- return err.ExitCode(), nil
- default:
- return 0, err
- }
-}
-
-// isNil will safely check if 'v' is nil without
-// dealing with weird Go interface nil bullshit.
-func isNil(i interface{}) bool {
- type eface struct{ Type, Data unsafe.Pointer }
- return (*(*eface)(unsafe.Pointer(&i))).Data == nil
-}