package Ġio . tm io . build k Ċ Ċ import Ġio . tm io . k ake . File Ċ import Ġio . tm io . k ake . K ake Ċ import Ġjava . net . URI Ċ import Ġio . tm io . k ake . K ake . Companion . file Ċ import Ġjava . net . URL Ċ Ċ class ĠBuild K Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġwrite ( fileName : ĠString , Ġcontents : ĠString Ġ= Ġ"", Ġcallable : Ġ( ()-> String )? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfile Contents Ġ= Ġif Ġ( callable Ġ!= Ġnull ) Ġcallable () Ġelse Ġcontents ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġjava . io . File ( fileName ). absolute File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . parent File . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( file Contents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontents ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġread ( fileName : ĠString , Ġblock : Ġ( contents : ĠString )-> ĠAny ? Ġ= Ġ{ Ġit Ġ}) Ġ: ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġblock ( java . io . File ( fileName ). read Text ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdownload ( fileName : ĠString ? Ġ= Ġnull , Ġurl : ĠString ): ĠDownload File Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠK ake . task ( Download File Task ( if Ġ( fileName Ġ== Ġnull ) Ġ( url . drop ( url . lastIndexOf ('/ '))) Ġelse ĠfileName , Ġurl )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdefine ( artifact : ĠString , Ġbody : Ġ() -> Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠDownload File Task ( name Ġ: ĠString , Ġval Ġurl : ĠString ) Ġ: ĠFile ( name ) Ġ{ ĊĊĠĠĠ Ġval Ġsource Ġ= ĠURL ( url ) ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠ Ġ} Ċ }