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  }