Python path setting (#2409)

* Add python package
* Add python path backend config
* Add python path to system settings page
* Apply python path to script scrapers and plugins
This commit is contained in:
WithoutPants
2022-03-24 09:22:41 +11:00
committed by GitHub
parent 329b611348
commit 0cd9a0a474
17 changed files with 147 additions and 53 deletions

View File

@@ -1,6 +1,7 @@
package plugin
import (
"context"
"encoding/json"
"errors"
"fmt"
@@ -11,6 +12,7 @@ import (
stashExec "github.com/stashapp/stash/pkg/exec"
"github.com/stashapp/stash/pkg/logger"
"github.com/stashapp/stash/pkg/plugin/common"
"github.com/stashapp/stash/pkg/python"
)
type rawTaskBuilder struct{}
@@ -30,19 +32,6 @@ type rawPluginTask struct {
done chan bool
}
func FindPythonExecutable() (string, error) {
_, err := exec.LookPath("python3")
if err != nil {
_, err = exec.LookPath("python")
if err != nil {
return "", err
}
return "python", nil
}
return "python3", nil
}
func (t *rawPluginTask) Start() error {
if t.started {
return errors.New("task already started")
@@ -53,14 +42,26 @@ func (t *rawPluginTask) Start() error {
return fmt.Errorf("empty exec value in operation %s", t.operation.Name)
}
if command[0] == "python" || command[0] == "python3" {
executable, err := FindPythonExecutable()
if err == nil {
command[0] = executable
var cmd *exec.Cmd
if python.IsPythonCommand(command[0]) {
pythonPath := t.serverConfig.GetPythonPath()
var p *python.Python
if pythonPath != "" {
p = python.New(pythonPath)
} else {
p, _ = python.Resolve()
}
if p != nil {
cmd = p.Command(context.TODO(), command[1:])
}
// if could not find python, just use the command args as-is
}
cmd := stashExec.Command(command[0], command[1:]...)
if cmd == nil {
cmd = stashExec.Command(command[0], command[1:]...)
}
stdin, err := cmd.StdinPipe()
if err != nil {