package Ġcom . red mad robot . build . internal . de te kt Ċ Ċ import Ġorg . eclipse . j git . api . Git Ċ import Ġorg . eclipse . j git . diff . Diff Entry Ċ import Ġorg . eclipse . j git . lib . Repository Ċ import Ġorg . eclipse . j git . storage . file . File Repository Builder Ċ import Ġorg . eclipse . j git . tre ew alk . Abstract Tree Iterator Ċ import Ġorg . eclipse . j git . tre ew alk . Canonical Tree Parser Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . file . Configurable File Collection Ċ import Ġorg . gradle . api . file . Directory Property Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġjava . io . File Ċ import Ġjava . io . Serializable Ċ Ċ internal Ġabstract Ġclass ĠCollect Git Diff Files Task Ġ: ĠDefault Task () Ġ{ ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġabstract Ġval Ġbranch : ĠProperty < String > ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġ@ get : Optional ĊĠĠĠ Ġabstract Ġval Ġfilter Params : ĠProperty < Filter Params > ĊĊĠĠĠ Ġ@ get : Input Directory ĊĠĠĠ Ġabstract Ġval Ġproject Dir : ĠDirectory Property ĊĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġabstract Ġval Ġoutput Files : ĠConfigur able File Collection ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġfind () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Dir Ġ= Ġproject Dir . get (). as File ĊĊĠĠĠĠĠĠĠ Ġval Ġrepository Ġ= ĠFile Repository Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Git Dir ( project Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġbranch Ġ= Ġbranch . get () ĊĠĠĠĠĠĠĠ Ġval Ġfilter Params Ġ= Ġfilter Params . getOrElse ( Filter Params ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġchanged Files Paths Ġ= Ġrepository . findAll Changed Files ( branch ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Params . change Types . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . change Type . to Inner Change Type () Ġin Ġfilter Params . change Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Diff Entry :: getNew Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Params . file Extensions . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Params . file Extensions . any ( path :: endsWith ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: File ) ĊĊĠĠĠĠĠĠĠ Ġoutput Files . set From ( changed Files Paths ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRepository . findAll Changed Files ( target : ĠString ): ĠList < Diff Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGit ( this ). diff () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Old Tree ( find Base Branch Tree ( target )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRepository . find Base Branch Tree ( branch : ĠString ): ĠAbstract Tree Iterator Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbranch Commit Ġ= Ġresolve ("$ branch ^{ tree }") ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= Ġnew Object Reader () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCan onical Tree Parser (). apply Ġ{ Ġreset ( reader , Ġbranch Commit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDiff Entry . Change Type . to Inner Change Type (): ĠChange Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiff Entry . Change Type . ADD , ĠDiff Entry . Change Type . COPY Ġ-> ĠChange Type . ADD ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiff Entry . Change Type . MO DIFY , ĠDiff Entry . Change Type . RE NAME Ġ-> ĠChange Type . MO DIFY ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiff Entry . Change Type . DELETE Ġ-> ĠChange Type . DELETE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠFilter Params ( ĊĠĠĠĠĠĠĠ Ġval Ġchange Types : ĠList < Change Type > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġval Ġfile Extensions : ĠSet < String > Ġ= Ġempty Set (), ĊĠĠĠ Ġ) Ġ: ĠSerializable Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠserialVersionUID Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠChange Type Ġ{ ĊĠĠĠĠĠĠĠ ĠADD , ĊĠĠĠĠĠĠĠ ĠMODIFY , ĊĠĠĠĠĠĠĠ ĠDELETE ĊĠĠĠ Ġ} Ċ } Ċ