github.com/aneshas/cli@v0.0.0-20180104210444-aec958fa47db/langs/dotnet.go (about) 1 package langs 2 3 import ( 4 "os" 5 "os/exec" 6 ) 7 8 type DotNetLangHelper struct { 9 BaseHelper 10 } 11 12 func (h *DotNetLangHelper) Handles(lang string) bool { 13 return defaultHandles(h, lang) 14 } 15 func (h *DotNetLangHelper) Runtime() string { 16 return h.LangStrings()[0] 17 } 18 19 func (lh *DotNetLangHelper) LangStrings() []string { 20 return []string{"dotnet"} 21 } 22 func (lh *DotNetLangHelper) Extensions() []string { 23 return []string{".cs", ".fs"} 24 } 25 func (lh *DotNetLangHelper) BuildFromImage() (string, error) { 26 return "microsoft/dotnet:1.0.1-sdk-projectjson", nil 27 } 28 func (lh *DotNetLangHelper) RunFromImage() (string, error) { 29 return "microsoft/dotnet:runtime", nil 30 } 31 32 func (lh *DotNetLangHelper) Entrypoint() (string, error) { 33 return "dotnet dotnet.dll", nil 34 } 35 36 func (lh *DotNetLangHelper) HasPreBuild() bool { 37 return true 38 } 39 40 // PreBuild for Go builds the binary so the final image can be as small as possible 41 func (lh *DotNetLangHelper) PreBuild() error { 42 wd, err := os.Getwd() 43 if err != nil { 44 return err 45 } 46 47 cmd := exec.Command( 48 "docker", "run", 49 "--rm", "-v", 50 wd+":/dotnet", "-w", "/dotnet", "microsoft/dotnet:1.0.1-sdk-projectjson", 51 "/bin/sh", "-c", "dotnet restore && dotnet publish -c release -b /tmp -o .", 52 ) 53 cmd.Stderr = os.Stderr 54 cmd.Stdout = os.Stdout 55 if err := cmd.Run(); err != nil { 56 return dockerBuildError(err) 57 } 58 return nil 59 } 60 61 func (lh *DotNetLangHelper) AfterBuild() error { 62 return nil 63 }