/* Ċ Ġ* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 0 ĠNet flix , ĠInc . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġcom . netflix . graphql . d gs . codegen . gradle Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . logging . Logging Ċ import Ġorg . gradle . api . plugins . Java Plugin Ċ import Ġorg . gradle . api . plugins . Java Plugin Convention Ċ import Ġorg . gradle . api . tasks . Source Set Ċ import Ġjava . util .* Ċ Ċ class ĠCode gen Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGR AD LE _ GROUP Ġ= Ġ" D GS ĠGraphQL ĠCode gen " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogging . getLogger ( Code gen Plugin :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextensions Ġ= Ġproject . extensions . create (" codegen ", ĠCode gen Plugin Extension :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġproject . plugins . apply ( Java Plugin :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerate Java Task Provider Ġ= Ġproject . tasks . register (" generate Java ", ĠGenerate Java Task :: class . java ) ĊĠĠĠĠĠĠĠ Ġgenerate Java Task Provider . configure Ġ{ Ġit . group Ġ= ĠGR AD LE _ GROUP Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . get Tasks ByName (" compile Java ", Ġfalse ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . depends On ( generate Java Task Provider . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . get Tasks ByName (" compile Kotlin ", Ġfalse ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . depends On ( generate Java Task Provider . get ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjava Convention Ġ= Ġproject . convention . get Plugin ( Java Plugin Convention :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Sets Ġ= Ġjava Convention . source Sets ĊĠĠĠĠĠĠĠ Ġval Ġmain Source Set Ġ= Ġsource Sets . get ByName ( Source Set . MAIN _ SOURCE _ SET _ NAME ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Dir Ġ= Ġgenerate Java Task Provider . get (). getOutput Dir () ĊĠĠĠĠĠĠĠ Ġmain Source Set . java . src Dirs ( output Dir ) ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ Ġp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( extensions . client Core Con ventions Enabled . getOrElse ( true )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Apply ing ĠCode gen Plugin ĠClient ĠUtils Ġconventions .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient Utils Con ventions . apply ( p , ĠOptional . of Nullable ( extensions . client Core Version . or Null )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ