/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . api . component . impl Ċ Ċ import Ġcom . android . build . api . artifact . Operations Ċ import Ġcom . android . build . api . component . Component Identity Ċ import Ġcom . android . build . api . component . Component Properties Ċ import Ġcom . android . build . api . variant . Filter Configuration Ċ import Ġcom . android . build . api . variant . impl . Gradle Property Ċ import Ġcom . android . build . api . variant . impl . Variant Output Configuration Impl Ċ import Ġcom . android . build . api . variant . impl . Variant Output Impl Ċ import Ġcom . android . build . api . variant . impl . Variant Output List Ċ import Ġcom . android . build . gradle . internal . api . dsl . Dsl Scope Ċ import Ġcom . android . build . gradle . internal . scope . A pk Data Ċ import Ġcom . android . build . gradle . internal . scope . Variant Scope Ċ import Ġcom . android . build . gradle . internal . utils . set Dis allow Changes Ċ import Ġcom . android . build . gradle . options . Boolean Option Ċ import Ġorg . gradle . api . provider . Property Ċ Ċ abstract Ġclass ĠComponent Properties Impl ( ĊĠĠĠ Ġval Ġd sl Scope : ĠD sl Scope , ĊĠĠĠ Ġval Ġvariant Scope : ĠVariant Scope , ĊĠĠĠ Ġoverride Ġval Ġoperations : ĠOperations , ĊĠĠĠ Ġconfiguration : ĠComponent Identity Ċ ): ĠComponent Properties , ĠComponent Identity Ġby Ġconfiguration Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġvariant Dsl Info Ġ= Ġvariant Scope . variant Dsl Info ĊĊĠĠĠ Ġprivate Ġval Ġvariant Outputs = Ġmutable ListOf < Variant Output Impl >() ĊĊĠĠĠ Ġoverride Ġval Ġoutputs : ĠVariant Output List ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠVariant Output List ( variant Outputs . toList ()) ĊĊĠĠĠ Ġoverride Ġval Ġapplication Id : ĠProperty < String > Ġ= Ġd sl Scope . object Factory . property ( String :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Dis allow Changes ( dsl Scope . provider Factory . provider Ġ{ Ġvariant Dsl Info . application Id Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Variant Output ( apk Data : ĠA pk Data ): ĠVariant Output Impl Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠDSL Ġobjects Ġare Ġnow Ġlocked , Ġif Ġthe Ġversion Code Ġis Ġprovided , Ġuse Ġthat ĊĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġuse Ġthe Ġlazy Ġmanifest Ġreader Ġto Ġextract Ġthe Ġvalue Ġfrom Ġthe Ġmanifest ĊĠĠĠĠĠĠĠ Ġ// Ġfile . ĊĠĠĠĠĠĠĠ Ġval Ġversion Code Ġ= Ġvariant Dsl Info . getVersion Code ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġversion Code Property Ġ= Ġinitialize Property ( Int :: class . java , Ġ"$ name :: version Code ") ĊĠĠĠĠĠĠĠ Ġif Ġ( version Code Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Property . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd sl Scope . provider Factory . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Dsl Info . manifest Version Code Supplier . as Int ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Property . set ( version Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠDSL Ġobjects Ġare Ġnow Ġlocked , Ġif Ġthe Ġversion Name Ġis Ġprovided , Ġuse Ġthat ; Ġotherwise Ġuse ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġlazy Ġmanifest Ġreader Ġto Ġextract Ġthe Ġvalue Ġfrom Ġthe Ġmanifest Ġfile . ĊĠĠĠĠĠĠĠ Ġval Ġversion Name Ġ= Ġvariant Dsl Info . getVersion Name ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġversion Name Property Ġ= Ġinitialize Property ( String :: class . java , Ġ"$ name :: version Name ") ĊĠĠĠĠĠĠĠ Ġversion Name Property . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd sl Scope . provider Factory . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Name Ġ?: Ġvariant Dsl Info . manifest Version Name Supplier . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvariant Output Configuration Ġ= ĠVariant Output Configuration Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk Data . is Universal , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk Data . filters . map Ġ{ Ġfilter Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Configuration . Filter Type . valueOf ( filter Data . filter Type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Data . identifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠVariant Output Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Property , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Name Property , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Property ( Boolean :: class . java , Ġ"$ name :: isEnabled "). value ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Output Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk Data ĊĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk Data . variant Output Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Outputs . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > Ġinitialize Property ( type : ĠClass < T >, Ġid : ĠString ): ĠProperty < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( variant Scope . global Scope . project Options [ Boolean Option . USE _ SAFE _ PROPERTIES ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGradle Property . safe Reading Before Execution ( id , Ġd sl Scope . object Factory . property ( type )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd sl Scope . object Factory . property ( type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }