package Ġcom . github . g ma zz o . gradle . plugins Ċ Ċ import Ġcom . github . g ma zz o . gradle . plugins . generators . Build Config Generator Ċ import Ġcom . github . g ma zz o . gradle . plugins . generators . Build Config Java Generator Ċ import Ġcom . github . g ma zz o . gradle . plugins . generators . Build Config Kotlin Generator Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Named Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ Ċ interface ĠBuild Config Class Spec Ġ: ĠNamed Ġ{ ĊĊĠĠĠ Ġval ĠclassName : ĠProperty < String > ĊĊĠĠĠ Ġval ĠpackageName : ĠProperty < String > ĊĊĠĠĠ Ġval Ġgenerator : ĠProperty < Build Config Generator > ĊĊĠĠĠ Ġfun ĠclassName ( className : ĠString ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . className . set ( className ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠpackageName ( packageName : ĠString ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . packageName . set ( packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwithout Package () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ ĠpackageName ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerator ( generator : ĠBuild Config Generator ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . generator . set ( generator ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġuse Java Output () Ġ= ĊĠĠĠĠĠĠĠ Ġuse Java Output Ġ{} ĊĊĠĠĠ Ġfun Ġuse Java Output ( configure : ĠAction < Build Config Java Generator >) Ġ= ĊĠĠĠĠĠĠĠ Ġgenerator ( Build Config Java Generator (). apply ( configure :: execute )) ĊĊĠĠĠ Ġfun Ġuse Kotlin Output () Ġ= ĊĠĠĠĠĠĠĠ Ġuse Kotlin Output Ġ{} ĊĊĠĠĠ Ġfun Ġuse Kotlin Output ( configure : ĠAction < Build Config Kotlin Generator >) Ġ= ĊĠĠĠĠĠĠĠ Ġgenerator ( Build Config Kotlin Generator (). apply ( configure :: execute )) ĊĊĠĠĠ Ġfun Ġbuild Config Field ( field : ĠBuild Config Field ): ĠBuild Config Field ĊĊĠĠĠ Ġfun Ġbuild Config Field ( type : ĠString , Ġname : ĠString , Ġvalue : ĠString ) ĊĊĠĠĠ Ġfun Ġbuild Config Field ( type : ĠString , Ġname : ĠString , Ġvalue : ĠProvider < String >) ĊĊĠĠĠ Ġval Ġgenerate Task : ĠTask Provider < Build Config Task > Ċ Ċ } Ċ