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

     1  package buildconf
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/metux/go-metabuild/spec/features"
     7  	"github.com/metux/go-metabuild/util/specobj"
     8  )
     9  
    10  type Key = specobj.Key
    11  type SpecObj = specobj.SpecObj
    12  
    13  const (
    14  	KeyCheckConfig = Key("config")
    15  	KeyPackages    = Key("packages")
    16  	KeyFlags       = Key("flags")
    17  	KeyVersion     = Key("version")
    18  	KeyAuthors     = Key("authors")
    19  	KeyLinguas     = Key("linguas")
    20  )
    21  
    22  type BuildConf struct {
    23  	specobj.SpecObj
    24  	Features features.FeatureMap
    25  }
    26  
    27  // define a conditional/switch symbol
    28  func (bc BuildConf) ConfigBool(sym string, val bool) {
    29  	bc.KConfBool(sym, val)
    30  	bc.ACBool(sym, val)
    31  }
    32  
    33  func (bc BuildConf) ConfigStr(sym string, val string) {
    34  	bc.KConfStr(sym, val)
    35  	bc.ACStr(sym, val)
    36  }
    37  
    38  func (bc BuildConf) ConfigStrList(sym string, val []string) {
    39  	bc.ConfigStr(sym, strings.Join(val, " "))
    40  }
    41  
    42  func (bc BuildConf) PkgNameTrans(id string) string {
    43  	return bc.TargetDistro().PackageNameTrans(id)
    44  }
    45  
    46  func (bc BuildConf) Init() {
    47  	bc.DefaultPutStr("@features", "${features}")
    48  	bc.DefaultPutStr(KeyBuildDir, BuildDir)
    49  	bc.DefaultPutStr(KeyBuildDirTmp, BuildDirTmp)
    50  	bc.DefaultPutStr(KeyBuildDirDist, BuildDirDist)
    51  }
    52  
    53  func (bc BuildConf) Flags(build bool) SpecObj {
    54  	return bc.SubForBuild(build, KeyFlags)
    55  }