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  }