diff --git a/pkg/plugin/config.go b/pkg/plugin/config.go index 20221e029..333997b7c 100644 --- a/pkg/plugin/config.go +++ b/pkg/plugin/config.go @@ -10,6 +10,7 @@ import ( "strings" "github.com/stashapp/stash/pkg/plugin/hook" + "github.com/stashapp/stash/pkg/python" "github.com/stashapp/stash/pkg/utils" "gopkg.in/yaml.v2" ) @@ -294,16 +295,18 @@ func (c Config) getConfigPath() string { } func (c Config) getExecCommand(task *OperationConfig) []string { - ret := c.Exec + // #4859 - don't modify the original exec command + ret := append([]string{}, c.Exec...) if task != nil { ret = append(ret, task.ExecArgs...) } - if len(ret) > 0 { + // #4859 - don't use the plugin path in the exec command if it is a python command + if len(ret) > 0 && !python.IsPythonCommand(ret[0]) { _, err := exec.LookPath(ret[0]) if err != nil { - // change command to use absolute path + // change command to run from the plugin path pluginPath := filepath.Dir(c.path) ret[0] = filepath.Join(pluginPath, ret[0]) } diff --git a/pkg/python/exec.go b/pkg/python/exec.go index 14f6f1927..68fd18c88 100644 --- a/pkg/python/exec.go +++ b/pkg/python/exec.go @@ -35,7 +35,7 @@ func Resolve(configuredPythonPath string) (*Python, error) { case err == nil && !isFile: logger.Warnf("configured python path is not a file: %s", configuredPythonPath) case err != nil: - logger.Warnf("unable to use configured python path: %s", err) + logger.Warnf("unable to use configured python path: %v", err) } } @@ -44,7 +44,7 @@ func Resolve(configuredPythonPath string) (*Python, error) { if err != nil { python, err := exec.LookPath("python") if err != nil { - return nil, fmt.Errorf("python executable not in PATH: %s", err) + return nil, fmt.Errorf("python executable not in PATH: %w", err) } ret := Python(python) return &ret, nil