package Ġcom . cj bo oms . fab ri kt . model Ċ Ċ import Ġcom . cj bo oms . fab ri kt . util . FileUtils . writeFile To Ċ import Ġcom . squareup . kotlin po et . File Spec Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . nio . file . Path Ċ Ċ sealed Ġclass ĠGenerated File Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġwrite File To ( output Dir : ĠFile ) Ċ } Ċ Ċ data Ġclass ĠSimple File ( val Ġpath : ĠPath , Ġval Ġcontent : ĠString ) Ġ: ĠGenerated File () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite File To ( output Dir : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path . parent Ġ!= Ġnull ) Ġoutput Dir . resolve ( path . parent . toString ()). mkdir s () ĊĠĠĠĠĠĠĠ Ġoutput Dir . resolve ( this . path . toString ()). write Text ( content ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠResource File ( ĊĠĠĠ Ġval ĠinputStream : ĠInputStream , ĊĠĠĠ Ġval ĠfileName : ĠString Ċ ) Ġ: ĠGenerated File () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite File To ( output Dir : ĠFile ) Ġ= ĠinputStream . writeFile To ( Path . of ( output Dir . absolute Path , ĠfileName )) Ċ } Ċ Ċ data Ġclass ĠKotlin Source Set ( val Ġfiles : ĠCollection < File Spec >, Ġval Ġsrc Dir : ĠPath ) Ġ: ĠGenerated File () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite File To ( output Dir : ĠFile ) Ġ= Ġfiles . distinct (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . writeTo ( output Dir . resolve ( src Dir . toString ())) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠResource Source Set ( val Ġfiles : ĠCollection < Resource File >, Ġval Ġsrc Dir : ĠPath ) Ġ: ĠGenerated File () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite File To ( output Dir : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( output Dir . resolve ( src Dir . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . forEach Ġ{ Ġit . writeFile To ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ