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  }