github.com/iron-io/functions@v0.0.0-20180820112432-d59d7d1c40b2/fn/langs/rust.go (about) 1 package langs 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 ) 8 9 type RustLangHelper struct { 10 BaseHelper 11 } 12 13 func (lh *RustLangHelper) Entrypoint() string { 14 return "/function/target/release/func" 15 } 16 17 func (lh *RustLangHelper) HasPreBuild() bool { 18 return true 19 } 20 21 // PreBuild for rust builds the binary so the final image can be as small as possible 22 func (lh *RustLangHelper) PreBuild() error { 23 wd, err := os.Getwd() 24 if err != nil { 25 return err 26 } 27 28 cmd := exec.Command( 29 "docker", "run", 30 "--rm", "-v", 31 wd+":/app", "-w", "/app", "corey/rust-alpine", 32 "/bin/sh", "-c", "cargo build --release", 33 ) 34 cmd.Stderr = os.Stderr 35 cmd.Stdout = os.Stdout 36 if err := cmd.Run(); err != nil { 37 return fmt.Errorf("error running docker build: %v", err) 38 } 39 return nil 40 } 41 42 func (lh *RustLangHelper) AfterBuild() error { 43 return os.RemoveAll("target") 44 }