mirror of https://github.com/stashapp/stash.git
Fix python not being resolved correctly if not in path (#4864)
* Don't replace plugin exec path if python command. Don't clobber exec * Fix logging of python resolve errors
This commit is contained in:
parent
062d566195
commit
865208844c
|
@ -10,6 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/stashapp/stash/pkg/plugin/hook"
|
"github.com/stashapp/stash/pkg/plugin/hook"
|
||||||
|
"github.com/stashapp/stash/pkg/python"
|
||||||
"github.com/stashapp/stash/pkg/utils"
|
"github.com/stashapp/stash/pkg/utils"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
@ -294,16 +295,18 @@ func (c Config) getConfigPath() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c Config) getExecCommand(task *OperationConfig) []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 {
|
if task != nil {
|
||||||
ret = append(ret, task.ExecArgs...)
|
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])
|
_, err := exec.LookPath(ret[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// change command to use absolute path
|
// change command to run from the plugin path
|
||||||
pluginPath := filepath.Dir(c.path)
|
pluginPath := filepath.Dir(c.path)
|
||||||
ret[0] = filepath.Join(pluginPath, ret[0])
|
ret[0] = filepath.Join(pluginPath, ret[0])
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ func Resolve(configuredPythonPath string) (*Python, error) {
|
||||||
case err == nil && !isFile:
|
case err == nil && !isFile:
|
||||||
logger.Warnf("configured python path is not a file: %s", configuredPythonPath)
|
logger.Warnf("configured python path is not a file: %s", configuredPythonPath)
|
||||||
case err != nil:
|
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 {
|
if err != nil {
|
||||||
python, err := exec.LookPath("python")
|
python, err := exec.LookPath("python")
|
||||||
if err != nil {
|
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)
|
ret := Python(python)
|
||||||
return &ret, nil
|
return &ret, nil
|
||||||
|
|
Loading…
Reference in New Issue