/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 Ġ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 . gradle . internal . tasks Ċ Ċ import Ġcom . android . utils . FileUtils Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . tasks . Internal Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġjava . lang . RuntimeException Ċ Ċ /** Ċ Ġ* ĠBase Ġvariant - aware Ġnon - incremental Ġtask Ċ Ġ*/ Ċ abstract Ġclass ĠNon Incremental Task Ġ: ĠAndroid Variant Task () Ġ{ ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġdo Task Action () ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġtask Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Task Action ( analytics Service . or Null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclean Up Task Outputs () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Task Action () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠBase Ġnon Ġvariant - aware Ġnon - incremental Ġtask Ċ Ġ* Ċ Ġ* ĠThis Ġcurrently Ġneeds Ġto Ġimplement Ġ[ Variant Aware Task ] Ġbecause Ġour Ġanalytics Ċ Ġ* Ġrequire Ġ[ variant Name ] Ġto Ġbe Ġpresent Ġso Ġthat Ġwe Ġcan Ġensure Ġthat Ġit 's Ġalways Ċ Ġ* Ġset Ġfor Ġvariant Ġaware Ġtasks . ĠFor Ġglobal Ġtask Ġit 's Ġmeant Ġto Ġbe Ġempty . Ċ Ġ* Ċ Ġ* ĠTODO Ġfigure Ġout Ġa Ġbetter Ġmechanism Ġthat Ġdoes Ġnot Ġrequire Ġglobal Ġtasks Ġto Ġhave Ġa Ġvariant Ġname Ċ Ġ*/ Ċ abstract Ġclass ĠNon Incremental Global Task Ġ: ĠBase Task (), ĠVariant Aware Task Ġ{ ĊĊĠĠĠ Ġ// ĠFIXME Ġshould Ġbe Ġfinal Ġonce ĠL int Per Variant Task Ġis Ġchanged Ġto Ġnot Ġinherit Ġfrom Ġthis . ĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġoverride Ġvar Ġvariant Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Do Ġnot Ġset Ġvariant Ġname Ġon ĠNon Incremental Global Task ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġdo Task Action () ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġtask Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Task Action ( analytics Service . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclean Up Task Outputs () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Task Action () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠUsed Ġto Ġensure Ġtask Ġoutputs Ġare Ġdeleted Ġbefore Ġa Ġtask Ġis Ġrun Ċ Ġ* Ġnon - increment ally . Ċ Ġ* Ċ Ġ* ĠTo Ġavoid Ġissues Ġsuch Ġas Ġhttp :// issue tracker . google . com / 1 5 0 2 7 4 4 2 7 # comment 1 7 Ċ Ġ* Ġwhere Ġthe Ġcurrent Ġworkaround Ġis Ġfor Ġusers Ġto Ġdelete Ġbuild Ġdirectories Ġmanually Ġafter ĠA GP Ġupdates , Ċ Ġ*/ Ċ fun ĠTask . clean Up Task Outputs () Ġ{ ĊĠĠĠ Ġfor Ġ( file Ġin Ġoutputs . files ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġclear Ġoutput Ġdirectory Ġcontents , Ġkeep Ġthe Ġdirectory . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Directory Contents ( file ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Path ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }