package Ġcom . guid ove zz oni . gradle . sm ar tp ro perties . gradle Ċ Ċ import Ġcom . guid ove zz oni . gradle . sm ar tp ro perties . logger . Custom Logging Ċ import Ġgro ovy . lang . Closure Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Named Domain Object Container Ċ import Ġorg . gradle . api . Project Ċ Ċ /** Ċ Ġ* ĠExtension Ġclass Ġfor Ġplugin Ġconfiguration Ċ Ġ*/ Ċ open Ġclass ĠConfig Script Extension ( private Ġval Ġproject : ĠProject ) Ġ{ ĊĠĠĠ Ġval Ġlogger Ġ= ĠCustom Logging . getLogger ( Config Script Extension :: class . java ) ĊĊĠĠĠ Ġvar Ġdefault Config : ĠConfig Script Block ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġproduct Fl avors : ĠNamed Domain Object Container < Config Script Block >? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġdefault Config ( default Def : ĠClosure < *> ): ĠConfig Script Block ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( default Config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Only Ġone Ġdefault Config Ġclosure Ġallowed ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdefault Config Ġ= ĠConfig Script Block () ĊĊĠĠĠĠĠĠĠ Ġproject . configure ( default Config !! , Ġdefault Def ) ĊĠĠĠĠĠĠĠ Ġdefault Def . delegate Ġ= Ġdefault Config ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdefault Config ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġproduct Fl avors ( action : ĠAction < in ĠNamed Domain Object Container < Config Script Block > ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . execute ( product Fl avors ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXT ENSION _ NAME Ġ= Ġ" smart Properties Plugin " ĊĠĠĠ Ġ} Ċ } Ċ