github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/spec/generate/generate.go (about)

     1  package generate
     2  
     3  import (
     4  	"github.com/metux/go-metabuild/spec/buildconf"
     5  	"github.com/metux/go-metabuild/util/specobj"
     6  )
     7  
     8  type Generate struct {
     9  	specobj.SpecObj
    10  	BuildConf buildconf.BuildConf
    11  }
    12  
    13  type GenerateList = []Generate
    14  
    15  func (gen Generate) Init() error {
    16  	return gen.detectType()
    17  }
    18  
    19  func (gen Generate) String() string {
    20  	return gen.Type() + " => " + gen.OutputFile()
    21  }
    22  
    23  func (gen Generate) OutputFile() string {
    24  	return gen.EntryStr(KeyOutput)
    25  }
    26  
    27  func (gen Generate) TemplateFile() string {
    28  	return gen.EntryStr(KeyTemplate)
    29  }
    30  
    31  func (gen Generate) Marker() string {
    32  	return gen.EntryStr(KeyMarker)
    33  }
    34  
    35  func (gen Generate) Type() string {
    36  	return gen.EntryStr(KeyType)
    37  }
    38  
    39  func (gen Generate) detectType() error {
    40  	if gen.Type() != "" {
    41  		return nil
    42  	}
    43  
    44  	types := []Key{
    45  		KeyKConf,
    46  		KeyAC,
    47  		KeyTextfile,
    48  	}
    49  
    50  	for _, x := range types {
    51  		if s := gen.EntryStrList(x); len(s) > 0 {
    52  			gen.EntryPutStr(KeyType, string(x))
    53  			gen.EntryPutStr(KeyOutput, s[0])
    54  			return nil
    55  		}
    56  	}
    57  
    58  	return ErrUnsupportedGenerate
    59  }