package Ġcom . arg us apm . gradle . internal . c utter Ċ Ċ import Ġcom . android . build . api . transform .* Ċ import Ġcom . arg us apm . gradle . internal . aj c . content Types Ċ import Ġcom . arg us apm . gradle . internal . aj c . scopes Ċ import Ġcom . arg us apm . gradle . internal . concurrent . IT ask Ċ import Ġcom . arg us apm . gradle . internal . concurrent . ThreadPool Ċ import Ġcom . arg us apm . gradle . internal . utils .* Ċ import Ġorg . apache . commons . io . FileUtils Ċ Ċ /** Ċ Ġ* Ġ è¾ĵåħ¥ æºĲ åĪĩ åī² åĻ¨ ï¼Į åĪĨåĪ« åĪĩ åī² åĪ° ï¼ļ include ãĢģ exclude ãĢģ aspect s ä¸īä¸ª çĽ®å½ķ ä¸ĭ Ċ Ġ*/ Ċ internal Ġclass ĠInput Source C utter ( val Ġtransform Invocation : ĠTransform Invocation , Ġval Ġfile Filter : ĠFile Filter , Ġval Ġinput SourceFile Status : ĠInput SourceFile Status ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtask Manager Ġ= ĠThreadPool () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( transform Invocation . is Incremental ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . is Incremental (" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . cut Start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Invocation . inputs . forEach Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . directory Inputs . forEach Ġ{ Ġdir Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Dir Inputs Changed ( dir Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . jar Inputs . forEach Ġ{ Ġjar Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Jar Inputs Changed ( jar Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . cut End () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . is Incremental (" false ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . cut Start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Invocation . output Provider . delete All () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransform Invocation . inputs . forEach Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . directory Inputs . forEach Ġ{ Ġdir Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcut Dir Inputs ( dir Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . jar Inputs . forEach Ġ{ Ġjar Input Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcut Jar Inputs ( jar Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Status . cut End () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcut Dir Inputs ( dir Input : ĠDirectory Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Manager . add Task ( object Ġ: ĠI Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Input . file . each File Recur se Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĩæ»¤ åĩº AJ æĸĩä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . filter AJ Class From Dir ( dir Input , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĩæ»¤ åĩº class æĸĩä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . filter Class From Dir ( dir Input , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// put Ġexclude Ġfiles Ġinto Ġjar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Of Files ( get Exclude File Dir ()) Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexclude Jar Ġ= Ġtransform Invocation . output Provider . getContent Location (" exclude ", Ġcontent Types Ġas ĠSet < Qualified Content . ContentType >, Ġscopes , ĠFormat . JAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerge Jar ( get Exclude File Dir (), Ġexclude Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcut Jar Inputs ( jar Input : ĠJar Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Manager . add Task ( object Ġ: ĠI Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . filter AJ Class From Jar ( jar Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . filter Class From Jar ( transform Invocation , Ġjar Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwhen Dir Inputs Changed ( dir Input : ĠDirectory Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Manager . add Task ( object Ġ: ĠI Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Input . changed Files . forEach Ġ{ Ġ( file , Ġstatus ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . when AJ Class Changed Of Dir ( dir Input , Ġfile , Ġstatus , Ġinput SourceFile Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . when Class Changed Of Dir ( dir Input , Ġfile , Ġstatus , Ġinput SourceFile Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ include Ġfiles Ġ åıĳçĶŁ åıĺåĮĸ ï¼Į åĪĻ åĪłéĻ¤ include è¾ĵåĩº jar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input SourceFile Status . is Include File Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Core (" when Dir Inputs Changed Ġinclude ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinclude Output Jar Ġ= Ġtransform Invocation . output Provider . getContent Location (" include ", Ġcontent Types Ġas ĠSet < Qualified Content . ContentType >, Ġscopes , ĠFormat . JAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Quiet ly ( include Output Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ exclude Ġfiles åıĳçĶŁ åıĺåĮĸ ï¼Į åĪĻ éĩįæĸ° çĶŁæĪĲ exclude Ġjar åĪ° è¾ĵåĩº çĽ®å½ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input SourceFile Status . is Exclude File Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Core (" when Dir Inputs Changed Ġexclude ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexclude Output Jar Ġ= Ġtransform Invocation . output Provider . getContent Location (" exclude ", Ġcontent Types Ġas ĠSet < Qualified Content . ContentType > ?, Ġscopes , ĠFormat . JAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . delete Quiet ly ( exclude Output Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerge Jar ( get Exclude File Dir (), Ġexclude Output Jar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwhen Jar Inputs Changed ( jar Input : ĠJar Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( jar Input . status Ġ!= ĠStatus . NOT CHANGED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Manager . add Task ( object Ġ: ĠI Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . when AJ Class Changed Of Jar ( jar Input , Ġinput SourceFile Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Filter . when Class Changed Of Jar ( transform Invocation , Ġjar Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Cut () Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Manager . start Work () ĊĠĠĠ Ġ} Ċ }