package torrent import ( "bytes" "fmt" "os/exec" "github.com/debridmediamanager.com/zurg/internal/config" "github.com/debridmediamanager.com/zurg/pkg/logutil" ) type ScriptExecutor struct { Script string } func (se *ScriptExecutor) Execute() (string, error) { if se.Script == "" { return "", nil } cmd := exec.Command("/bin/sh", "-c", se.Script) var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { return "", fmt.Errorf("error executing script: %v; stderr: %s", err, stderr.String()) } return out.String(), nil } func OnLibraryUpdateHook(config config.ConfigInterface) { log := logutil.NewLogger().Named("hooks") executor := &ScriptExecutor{ Script: config.GetOnLibraryUpdate(), } output, err := executor.Execute() if err != nil { log.Errorf("Failed to execute hook on_library_update: %v", err) return } if output != "" { log.Infof("Output of hook on_library_update:\n%s", output) } }