/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . android . configure Ċ Ċ import Ġcom . android . ide . common . repository . Gradle Coordinate Ċ import Ġcom . android . tools . idea . gradle . dsl . api . Project Build Model Ċ import Ġcom . android . tools . idea . gradle . project . sync . Gradle Sync Invoker Ċ import Ġcom . android . tools . idea . project system . Dependency Management Exception Ċ import Ġcom . android . tools . idea . project system . getModule System Ċ import Ġcom . google . wire less . android . sdk . stats . Gradle Sync Stats . Trigger . TRIGGER _ LANGUAGE _ K OT LIN _ CONFIGURE D Ċ import Ġcom . intellij . openapi . file Editor . Open FileDescriptor Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . module . Module Util Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project Roots . Java Sdk Version Ċ import Ġcom . intellij . openapi . project Roots . Sdk Ċ import Ġcom . intellij . openapi . roots . Dependency Scope Ċ import Ġcom . intellij . openapi . roots . External Library Descriptor Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġorg . jetbrains . android . refactor ing . is Android x Ċ import Ġorg . jetbrains . kotlin . config . Language Feature Ċ import Ġorg . jetbrains . kotlin . idea . configuration . Build System Type Ċ import Ġorg . jetbrains . kotlin . idea . configuration . get Build System Type Ċ import Ġorg . jetbrains . kotlin . idea . extensions . gradle . Gradle Build Script Manip ulator Ċ import Ġorg . jetbrains . kotlin . idea . extensions . gradle . get Manip ulator Ċ import Ġorg . jetbrains . kotlin . idea . gradle Java . Kotlin Gradle Facade Impl Ċ import Ġorg . jetbrains . kotlin . idea . gradle Java . configuration . Kotlin With Gradle Configurator Ċ import Ġorg . jetbrains . kotlin . idea . util . project Structure . version Ċ import Ġorg . jetbrains . kotlin . idea . versions . MA VEN _ STD LIB _ ID _ JDK 7 Ċ import Ġorg . jetbrains . kotlin . idea . versions . has J re Specific Runtime Ċ import Ġorg . jetbrains . kotlin . platform . Target Platform Ċ import Ġorg . jetbrains . kotlin . platform . jvm . Jvm Platforms Ċ Ċ class ĠKotlin Android Gradle Module Configurator Ġ: ĠKotlin With Gradle Configurator () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= ĠNAME ĊĊĠĠĠ Ġoverride Ġval Ġtarget Platform : ĠTarget Platform Ġ= ĠJ vm Platforms . default Jvm Platform ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION _ ERROR ") ĊĠĠĠ Ġoverride Ġfun Ġget Target Platform (): Ġorg . jetbrains . kotlin . resolve . Target Platform Ġ= ĠJ vm Platforms . Compat Jvm Platform ĊĊĠĠĠ Ġoverride Ġval Ġpresent able Text : ĠString Ġ= Ġ" Android Ġwith ĠGradle " ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġis Applicable ( module : ĠModule ): ĠBoolean Ġ= Ġmodule . get Build System Type () Ġ== ĠBuild System Type . Android Gradle ĊĊĠĠĠ Ġoverride Ġval Ġkotlin Plugin Name : ĠString Ġ= ĠK OT LIN _ ANDROID ĊĊĠĠĠ Ġoverride Ġfun Ġget Kotlin Plugin Expression ( for Kotlin Dsl : ĠBoolean ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( for Kotlin Dsl ) Ġ" kotlin (\" android \") " Ġelse Ġ" id Ġ' org . jetbrains . kotlin . android ' Ġ" ĊĊĠĠĠ Ġoverride Ġfun Ġadd Elements ToFile ( file : ĠPsi File , Ġis TopLevel Project File : ĠBoolean , Ġversion : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanip ulator Ġ= ĠKotlin Gradle Facade Impl . get Manip ulator ( file , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= ĠModule Util . find Module For Psi Element ( file ) ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġsdk Ġ= ĠModule Root Manager . getInstance ( module ). sdk ĊĠĠĠĠĠĠĠ Ġval Ġj vm Target Ġ= Ġget Jvm Target ( sdk , Ġversion ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is TopLevel Project File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanip ulator . configure Project Build Script ( kotlin Plugin Name , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . project . is Android x ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Dependency ( manip ulator , ĠAND RO IDX _ CORE _ GROUP , ĠCORE _ K TX , Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tx Dependencies From Map ( module , Ġmanip ulator , Ġandroidx K tx Library Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tx Dependencies From Map ( module , Ġmanip ulator , Ġnon Android x K tx Library Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanip ulator . configure Module Build Script ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Plugin Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Kotlin Plugin Expression ( file . is Kt Dsl ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Std lib Artifact Name ( sdk , Ġversion ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj vm Target ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Std lib Artifact Name ( sdk : ĠS dk ?, Ġversion : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sdk Ġ!= Ġnull Ġ&& Ġhas J re Specific Runtime ( version )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdk Version Ġ= Ġsdk . version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sdk Version Ġ!= Ġnull Ġ&& Ġsdk Version . is At Least ( Java Sdk Version . JDK _ 1 _ 8 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAndroid Ġdex Ġcan 't Ġconvert Ġour Ġkotlin - stdlib - jre 8 Ġartifact , Ġso Ġuse Ġj re 7 Ġinstead Ġ( KT - 1 6 5 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠM AV EN _ STD LIB _ ID _ JDK 7 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Std lib Artifact Name ( sdk , Ġversion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Suppress W ild cards ĊĠĠĠ Ġoverride Ġfun Ġconfigure ( project : ĠProject , Ġexclude Modules : ĠCollection < Module >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . configure ( project , Ġexclude Modules ) ĊĠĠĠĠĠĠĠ Ġ// ĠSync Ġafter Ġchanging Ġbuild Ġscripts ĊĠĠĠĠĠĠĠ ĠGradle Sync Invoker . getInstance (). request Project Sync ( project , ĠGradle Sync Invoker . Request ( TRIGGER _ LANGUAGE _ K OT LIN _ CONFIGURE D )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Dependency ( manip ulator : ĠGradle Build Script Manip ulator <* >, ĠgroupId : ĠString , Ġartifact Id : ĠString , Ġversion : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmanip ulator . add Kotlin Library To Module Build Script ( ĊĠĠĠĠĠĠĠĠĠ ĠDependency Scope . COMPILE , ĊĠĠĠĠĠĠĠĠĠ ĠExternal Library Descriptor ( groupId , Ġartifact Id , Ġversion , Ġversion )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturn Ġversion Ġstring Ġof Ġthe Ġspecified Ġdependency Ġif Ġmodule Ġdepends Ġon Ġit , Ġand Ġnull Ġotherwise . ĊĠĠĠ Ġprivate Ġfun Ġget Dependency Version ( module : ĠModule , ĠgroupId : ĠString , Ġartifact Id : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinate Ġ= ĠGradle Coordinate ( groupId , Ġartifact Id , Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmodule . getModule System (). get Resolved Dependency ( coordinate )?. revision ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDependency Management Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd K tx Dependencies From Map ( module : ĠModule , Ġmanip ulator : ĠGradle Build Script Manip ulator <* >, Ġlibr ay Map : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( library , Ġk tx Library ) Ġin Ġlibr ay Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġlibrary . split (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk tx Ids Ġ= Ġk tx Library . split (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Dependency Version ( module , Ġids [ 0 ], Ġids [ 1 ]) ?. let Ġ{ add Dependency ( manip ulator , Ġk tx Ids [ 0 ], Ġk tx Ids [ 1 ], Ġit )} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġchange General Feature Configuration ( ĊĠĠĠ Ġmodule : ĠModule , ĊĠĠĠ Ġfeature : ĠLanguage Feature , ĊĠĠĠ Ġstate : ĠLanguage Feature . State , ĊĠĠĠ Ġfor Tests : ĠBoolean ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġ( enabled String , Ġdisabled String ) Ġ= Ġwhen Ġ( feature ) Ġ{ ĊĠĠĠĠĠ ĠLanguage Feature . Inline Classes Ġ-> Ġ"- X inline - classes " Ġto Ġ"- XX Language :- Inline Classes " ĊĠĠĠĠĠ Ġelse Ġ-> Ġ"- XX Language :+ ${ feature . name }" Ġto Ġ"- XX Language :- ${ feature . name }" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġproject Ġ= Ġmodule . project ĊĠĠĠ Ġval Ġproject Build Model Ġ= ĠProject Build Model . get ( project ) ĊĠĠĠ Ġval Ġmodule Build Model Ġ= Ġproject Build Model . getModule Build Model ( module ) Ġ?: Ġerror (" Build Ġmodel Ġfor Ġmodule Ġ$ module Ġnot Ġfound ") ĊĠĠĠ Ġval Ġfree Compiler Args Ġ= Ġmodule Build Model . android (). kotlin Options (). free Compiler Args () ĊĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠ ĠLanguage Feature . State . ENABLED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġfree Compiler Args . getList Value ( disabled String )?. delete () ĊĠĠĠĠĠĠĠ Ġfree Compiler Args . getList Value ( enabled String ) Ġ?: Ġfree Compiler Args . add List Value (). setValue ( enabled String ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠLanguage Feature . State . DISABLED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġfree Compiler Args . getList Value ( enabled String )?. delete () ĊĠĠĠĠĠĠĠ Ġfree Compiler Args . getList Value ( disabled String ) Ġ?: Ġfree Compiler Args . add List Value (). setValue ( disabled String ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Setting Ġa ĠKotlin Ġlanguage Ġfeature Ġto Ġstate Ġ$ state Ġis Ġunsupported Ġin Ġandroid - kotlin ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġproject Build Model . apply Changes () ĊĠĠĠ Ġmodule Build Model . re parse () ĊĠĠĠ Ġmodule Build Model . android (). kotlin Options (). free Compiler Args (). psi Element ?. let Ġ{ ĊĠĠĠĠĠ ĠOpen FileDescriptor ( project , Ġit . containing File . virtual File , Ġit . text Range . start Offset ). navigate ( true ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNAME Ġ= Ġ" android - gradle " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠK OT LIN _ ANDROID Ġ= Ġ" kotlin - android " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAND RO IDX _ CORE _ GROUP Ġ= Ġ" android x . core " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCORE _ K TX Ġ= Ġ" core - k tx " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnon Android x K tx Library Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠ Ġ" android . arch . navigation : navigation - ui " Ġto Ġ" android . arch . navigation : navigation - ui - k tx ", ĊĠĠĠĠĠĠĠĠĠ Ġ" android . arch . navigation : navigation - fragment " Ġto Ġ" android . arch . navigation : navigation - fragment - k tx " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġandroidx K tx Library Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠ Ġ" android x . lifecycle : lifecycle - extensions " Ġto Ġ" android x . lifecycle : lifecycle - view model - k tx " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ