package Ġcom . av ito . android . critical _ path Ċ Ċ import Ġcom . av ito . android . critical _ path . internal . Critical Path Report Ċ import Ġcom . av ito . android . critical _ path . internal . Critical Path Writer Ċ import Ġcom . av ito . kotlin . dsl . is Root Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ Ċ public Ġabstract Ġclass ĠCritical Path Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( project . is Root ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Plugin Ġmust Ġbe Ġapplied Ġto Ġthe Ġroot Ġproject Ġbut Ġwas Ġapplied Ġto Ġ${ project . path }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġproject . extensions . create ( extension Name , ĠCritical Path Extension :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Listeners ( project , Ġextension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Listeners ( project : ĠProject , Ġextension : ĠCritical Path Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Enabled Ġ= Ġextension . enabled . getOrElse ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! isEnabled ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġreport Writer Ġ= Ġcreate Report Writer ( project , Ġextension ) ĊĊĠĠĠĠĠĠĠ ĠCritical Path Registry . addListener ( project , Ġreport Writer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Report Writer ( project : ĠProject , Ġextension : ĠCritical Path Extension ): ĠCritical Path Writer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Dir Ġ= Ġextension . output . convention ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . layout . build Directory . dir (" reports / critical - path ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġreport Ġ= ĠCritical Path Report ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Ġ= Ġoutput Dir . file (" critical _ path . json "). get (). as File , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCritical Path Writer ( report ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġconst Ġval Ġextension Name Ġ= Ġ" critical Path " Ċ