code.icb4dc0.de/buildr/wasi-module-sdk-go@v0.0.0-20230524201105-cc52d195017b/executor.go (about)

     1  package sdk
     2  
     3  import (
     4  	"context"
     5  
     6  	"golang.org/x/exp/slog"
     7  )
     8  
     9  func NewExecutor(repoRoot, outDir, binDir string) Executor {
    10  	return Executor{
    11  		logger:   slog.New(NewWASIHandler()),
    12  		repoRoot: repoRoot,
    13  		outDir:   outDir,
    14  		binDir:   binDir,
    15  	}
    16  }
    17  
    18  type Executor struct {
    19  	logger   *slog.Logger
    20  	repoRoot string
    21  	outDir   string
    22  	binDir   string
    23  }
    24  
    25  func (e Executor) Run(ctx context.Context, m Module) {
    26  	execCtx := newWasiExecutionContext(ctx, e.logger, m, e.repoRoot, e.binDir, e.outDir)
    27  	if err := m.Execute(execCtx); err != nil {
    28  		e.logger.Error("Failed to execute module", slog.String("err", err.Error()))
    29  	}
    30  }