github.com/profzone/eden-framework@v1.0.10/internal/project/builder.go (about) 1 package project 2 3 import ( 4 "fmt" 5 "sort" 6 ) 7 8 var RegisteredBuilders = Builders{} 9 10 func RegisterBuilder(name string, builder *Builder) { 11 builder.name = name 12 RegisteredBuilders[name] = builder 13 SetEnv(name, builder.Image) 14 } 15 16 type FullImage string 17 18 func (i FullImage) String() string { 19 return fmt.Sprintf("${%s}/%s", EnvKeyDockerRegistryKey, string(i)) 20 } 21 22 type Builder struct { 23 name string 24 ProgramLanguage string 25 Image string 26 WorkingDir string 27 } 28 29 type Builders map[string]*Builder 30 31 func (bs Builders) GetBuilderBy(programLanguage string) *Builder { 32 for _, b := range bs { 33 if b.ProgramLanguage == programLanguage { 34 return b 35 } 36 } 37 return nil 38 } 39 40 func (bs Builders) SupportProgramLanguages() (list []string) { 41 for _, b := range bs { 42 if b.ProgramLanguage != "" { 43 list = append(list, b.ProgramLanguage) 44 } 45 } 46 sort.Strings(list) 47 return 48 }