github.com/aneshas/cli@v0.0.0-20180104210444-aec958fa47db/langs/php.go (about) 1 package langs 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "path/filepath" 8 "strings" 9 ) 10 11 type PhpLangHelper struct { 12 BaseHelper 13 } 14 15 func (h *PhpLangHelper) Handles(lang string) bool { 16 return defaultHandles(h, lang) 17 } 18 func (h *PhpLangHelper) Runtime() string { 19 return h.LangStrings()[0] 20 } 21 22 func (lh *PhpLangHelper) LangStrings() []string { 23 return []string{"php"} 24 } 25 func (lh *PhpLangHelper) Extensions() []string { 26 return []string{".php"} 27 } 28 29 func (lh *PhpLangHelper) BuildFromImage() (string, error) { 30 return "fnproject/php:dev", nil 31 } 32 33 func (lh *PhpLangHelper) RunFromImage() (string, error) { 34 return "fnproject/php:dev", nil 35 } 36 37 func (lh *PhpLangHelper) Entrypoint() (string, error) { 38 return "php func.php", nil 39 } 40 41 func (lh *PhpLangHelper) HasPreBuild() bool { 42 return true 43 } 44 45 func (lh *PhpLangHelper) PreBuild() error { 46 wd, err := os.Getwd() 47 if err != nil { 48 return err 49 } 50 51 if !exists(filepath.Join(wd, "composer.json")) { 52 return nil 53 } 54 55 pbcmd := fmt.Sprintf("docker run --rm -v %s:/worker -w /worker fnproject/php:dev composer install", wd) 56 fmt.Println("Running prebuild command:", pbcmd) 57 parts := strings.Fields(pbcmd) 58 head := parts[0] 59 parts = parts[1:] 60 cmd := exec.Command(head, parts...) 61 cmd.Stderr = os.Stderr 62 cmd.Stdout = os.Stdout 63 if err := cmd.Run(); err != nil { 64 return dockerBuildError(err) 65 } 66 return nil 67 } 68 69 func (h *PhpLangHelper) IsMultiStage() bool { 70 return false 71 } 72 73 func (h *PhpLangHelper) DockerfileBuildCmds() []string { 74 return []string{"ADD . /function/"} 75 } 76 func (lh *PhpLangHelper) AfterBuild() error { 77 return nil 78 }