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 }