/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠThe ĠB azel ĠAuthors . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 Ġio . bazel . kotlin . builder . tasks . jvm Ċ Ċ import Ġio . bazel . kotlin . builder . toolchain . Compilation Task Context Ċ import Ġio . bazel . kotlin . builder . toolchain . Kotlin Tool chain Ċ import Ġio . bazel . kotlin . builder . utils . addAll Ċ import Ġio . bazel . kotlin . builder . utils . joined Classpath Ċ import Ġio . bazel . kotlin . model . Jvm Compilation Task Ċ import Ġjava . io . File Ċ import Ġjava . io . PrintWriter Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ internal Ġclass ĠJava Compiler Ġ@ Inject Ġconstructor ( ĊĠ Ġprivate Ġval Ġjav ac Invoker : ĠKotlin Tool chain . J av ac Invoker Ċ ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSe parator Ġfor Ġa Ġdirectory Ġin Ġthe Ġclasspath . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠDIR _ SEP Ġ= Ġ"${ File . separator Char }${ File . path Separator }" ĊĠ Ġ} ĊĠĠĠ Ġfun Ġcompile ( context : ĠCompilation Task Context , Ġcommand : ĠJ vm Compilation Task ) Ġ: ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġi Ġ= Ġcommand . inputs ĊĠĠĠ Ġval Ġd Ġ= Ġcommand . directories ĊĠĠĠ Ġif Ġ( i . java Sources List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġargs Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ Ġ"- cp ", Ġ"${ d . classes }$ DIR _ SEP ${ d . temp }$ DIR _ SEP ${ i . joined Classpath }", ĊĠĠĠĠĠĠĠ Ġ"- d ", Ġd . classes ĊĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . addAll ( ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠKotlin Ġtakes Ġcare Ġof Ġannotation Ġprocessing . ĊĠĠĠĠĠĠĠĠĠ Ġ"- proc : none ", ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠDisable Ġoption Ġlint ing , Ġit Ġwill Ġcompl ain Ġabout Ġthe Ġsource . ĊĠĠĠĠĠĠĠĠĠ Ġ"- X lint :- options ", ĊĠĠĠĠĠĠĠĠĠ Ġ"- source ", Ġcommand . info . toolchain Info . jvm . jvm Target , ĊĠĠĠĠĠĠĠĠĠ Ġ"- target ", Ġcommand . info . toolchain Info . jvm . jvm Target ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġit . addAll ( i . java Sources List ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcontext . execute Compiler Task ( args , Ġ{ Ġa , Ġpw Ġ-> ĊĠĠĠĠĠĠĠ Ġjav ac Invoker . compile ( a , ĠPrintWriter ( pw )) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġempty List () ĊĠ Ġ} Ċ } Ċ