github.com/iron-io/functions@v0.0.0-20180820112432-d59d7d1c40b2/fn/langs/python.go (about) 1 package langs 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "strings" 8 ) 9 10 type PythonHelper struct { 11 BaseHelper 12 } 13 14 func (lh *PythonHelper) Entrypoint() string { 15 return "python2 func.py" 16 } 17 18 func (lh *PythonHelper) HasPreBuild() bool { 19 return true 20 } 21 22 // PreBuild for Go builds the binary so the final image can be as small as possible 23 func (lh *PythonHelper) PreBuild() error { 24 wd, err := os.Getwd() 25 if err != nil { 26 return err 27 } 28 29 pbcmd := fmt.Sprintf("docker run --rm -v %s:/worker -w /worker iron/python:2-dev pip install -t packages -r requirements.txt", wd) 30 fmt.Println("Running prebuild command:", pbcmd) 31 parts := strings.Fields(pbcmd) 32 head := parts[0] 33 parts = parts[1:len(parts)] 34 cmd := exec.Command(head, parts...) 35 cmd.Stderr = os.Stderr 36 cmd.Stdout = os.Stdout 37 if err := cmd.Run(); err != nil { 38 return fmt.Errorf("error running docker build: %v", err) 39 } 40 return nil 41 } 42 43 func (lh *PythonHelper) AfterBuild() error { 44 return nil 45 }