/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . gradle . gradle build . testing . integration tests . cleanup Ċ Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġorg . gradle . api . file . Directory Property Ċ import Ġorg . gradle . api . file . Regular File Property Ċ import Ġorg . gradle . api . model . ObjectFactory Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . Input Files Ċ import Ġorg . gradle . api . tasks . OutputFile Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġorg . gradle . internal . logging . Console Renderer Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Inject ĊĊ Ċ /** Ċ Ġ* ĠEns ures Ġthat Ġa Ġdirectory Ġis Ġempty Ġor Ġwrites Ġthe Ġnames Ġof Ġfiles Ġin Ċ Ġ* Ġthe Ġdirectory Ġto Ġa Ġreport Ġfile . Ċ Ġ*/ Ċ open Ġclass ĠEmpty Directory Check Ġ@ Inject Ġconstructor ( objects : ĠObject Factory ) Ġ: ĠDefault Task () Ġ{ ĊĊĠĠĠ Ġ@ get : Input Files ĊĠĠĠ Ġval Ġtarget Directory : ĠDirectory Property Ġ= Ġnew Input Directory () ĊĊĠĠĠ Ġ@ get : OutputFile ĊĠĠĠ Ġval Ġreport File : ĠRegular File Property Ġ= Ġnew OutputFile () ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġval Ġpolicy : ĠProperty < When NotEmpty > Ġ= Ġobjects . property ( When NotEmpty :: class . java ) ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġensure Directory Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnot Empty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġreport File . get (). as File ĊĠĠĠĠĠĠĠ Ġval Ġtarget Dir Ġ= Ġtarget Directory . get (). as File ĊĠĠĠĠĠĠĠ Ġproject . file Tree ( target Dir ). visit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot Empty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport . append Text ( file . absolute Path Ġ+ Ġ"\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( not Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( policy . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWhen NotEmpty . FAIL Ġ-> Ġthrow ĠGradle Exception ( create Message ( target Dir , Ġreport )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWhen NotEmpty . REPORT Ġ-> Ġlogger . warn ( create Message ( target Dir , Ġreport )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate ĊĠĠĠ Ġfun Ġcreate Message ( target Dir : ĠFile , Ġreport : ĠFile ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġdirectory Ġ$ target Dir Ġwas Ġnot Ġempty . ĠReport : Ġ${ Console Renderer (). as Clickable File Url ( report )}\ n ${ report . read Text () }" Ċ } Ċ