import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . util .* Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" jvm ") Ġversion Ġ" 1 . 3 . 7 1 " ĊĠĠĠ Ġjava ĊĠĠĠ Ġid (" com . github . john ren gel man . shadow ") Ġversion Ġ" 5 . 2 . 0 " Ċ } Ċ Ċ group Ġ= Ġ" stv zh g " Ċ version Ġ= Ġ" 0 . 1 . 1 " Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġmaven ( url Ġ= Ġ" https :// dl . bin tray . com / kotlin / kotlin - e ap ") ĊĠĠĠ Ġmaven ( url Ġ= Ġ" https :// mir rors . hu aw e ic loud . com / repository / maven ") ĊĠĠĠ Ġmaven Central () ĊĠĠĠ Ġj center () Ċ } Ċ Ċ val Ġmir ai Core Version Ġ= Ġ" 1 . 1 . 3 " Ġ// Ġ 1 . 2 . 1 Ċ val Ġmir ai Console Version Ġ= Ġ" 0 . 5 . 2 " Ġ// Ġ 1 . 0 - M 2 - 1 Ċ val Ġfuel Version Ġ= Ġ" +" Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġcompile Only ( kotlin (" stdlib - jdk 8 ")) ĊĠĠĠ Ġcompile Only (" net . mam oe : mir ai - core :$ mir ai Core Version ") ĊĠĠĠ Ġcompile Only (" net . mam oe : mir ai - console :$ mir ai Console Version ") ĊĊĠĠĠ Ġtest Implementation ( kotlin (" stdlib - jdk 8 ")) ĊĠĠĠ Ġtest Implementation (" net . mam oe : mir ai - core :$ mir ai Core Version ") ĊĠĠĠ Ġtest Implementation (" net . mam oe : mir ai - core - qq android :$ mir ai Core Version ") ĊĠĠĠ Ġtest Implementation (" net . mam oe : mir ai - console :$ mir ai Console Version ") ĊĊĠĠĠ Ġimplementation (" com . github . kit tin un f . fuel : fuel :$ fuel Version ") ĊĠĠĠ Ġimplementation (" com . github . kit tin un f . fuel : fuel - gson :$ fuel Version ") ĊĠĠĠ Ġimplementation (" com . github . kit tin un f . fuel : fuel - coroutines :$ fuel Version ") Ċ Ċ } Ċ Ċ java Ġ{ ĊĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġcompile Kotlin Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġ" 1 . 8 " ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompile Test Kotlin Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġ" 1 . 8 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrun Mir ai Console Ġby Ġcreating ( Java Exec :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" mir ai " ĊĠĠĠĠĠĠĠ Ġdepends On ( shadow Jar ) ĊĠĠĠĠĠĠĠ Ġdepends On ( test Classes ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Console Dir Ġ= Ġ" test " ĊĊĠĠĠĠĠĠĠ Ġdo First Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġremove Old Versions () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("$ test Console Dir / plugins / "). walk () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name . matches ( Regex (""" ${ project . name }- .* - all . jar "" ")) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" de leting Ġold Ġfiles : Ġ${ it . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcopy Build Output () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" build / libs / "). walk () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name . contains ("- all ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. max By Ġ{ Ġit . lastModified () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Cop ing Ġ${ it . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . inputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transfer To 1 ( File ("$ test Console Dir / plugins /${ it . name } "). apply Ġ{ Ġcreate New File () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. output Stream ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Copied Ġ${ it . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġworking Dir Ġ= ĠFile ( test Console Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworking Dir . mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( working Dir , Ġ" plugins "). mkdir () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Old Versions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Build Output () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ= Ġsource Sets [" test "]. runtime Classpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Ġ= Ġ" mir ai . Run Mir ai " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstandard Input Ġ= ĠSystem .` in ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( mir ai Core Version , Ġmir ai Console Version ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Throws ( IOException :: class ) Ċ fun ĠInputStream . transfer To 1 ( out : ĠOutputStream ): ĠLong Ġ{ ĊĠĠĠ ĠObjects . requireNonNull ( out , Ġ" out ") ĊĠĠĠ Ġvar Ġtransferred : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 8 1 9 2 ) ĊĠĠĠ Ġvar Ġread : ĠInt ĊĠĠĠ Ġwhile Ġ( this . read ( buffer , Ġ 0 , Ġ 8 1 9 2 ). also Ġ{ Ġread Ġ= Ġit Ġ} Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout . write ( buffer , Ġ 0 , Ġread ) ĊĠĠĠĠĠĠĠ Ġtransferred Ġ+= Ġread . to Long () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtransferred Ċ }