package Ġio . kot less . plugin . gradle . tasks Ċ Ċ import Ġio . kot less .* Ċ import Ġio . kot less . Web app Ċ import Ġio . kot less . parser . K ot less Parser Ċ import Ġio . kot less . plugin . gradle . dsl .* Ċ import Ġio . kot less . plugin . gradle . utils . my Kt Source Set Ċ import Ġio . kot less . plugin . gradle . utils . my Shadow Jar Ċ import Ġio . kot less . utils . Typed Storage Ċ import Ġorg . codehaus . plex us . util . FileUtils Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠK ot less Generate Ġtask Ġgenerates Ġterraform Ġcode Ġfrom ĠKotlin Ġcode Ġwritten Ġwith ĠK ot less . Ċ Ġ* Ċ Ġ* ĠIt Ġtakes Ġall Ġthe Ġconfiguration Ġfrom Ġglobal ĠK ot less DSL Ġconfiguration Ġ( at Ġ` kot less ` Ġfield ) Ċ Ġ* Ċ Ġ* Ġ@ see Ġk ot less Ċ Ġ* Ċ Ġ* ĠNote : ĠTask Ġis Ġcache able Ġand Ġwill Ġre generate Ġcode Ġonly Ġif Ġsources Ġor Ġconfiguration Ġhas Ġchanged . Ċ Ġ*/ Ċ @ Cache able Task Ċ open Ġclass ĠK ot less Generate Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" kot less " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġval Ġd sl : ĠK ot less DSL ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproject . kot less ĊĊĠĠĠ Ġ@ get : Input Files ĊĠĠĠ Ġ@ get : Path Sensitive ( Path Sensitivity . REL ATIVE ) ĊĠĠĠ Ġval Ġall Sources : ĠSet < File > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproject . my Kt Source Set . toSet () ĊĊĠĠĠ Ġ@ get : Input Files ĊĠĠĠ Ġ@ get : Path Sensitive ( Path Sensitivity . REL ATIVE ) ĊĠĠĠ Ġval Ġall T erraform Addition : ĠSet < File > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproject . kot less . extensions . terraform . files . additional ĊĊĠĠĠ Ġ@ get : Output Directory ĊĠĠĠ Ġval Ġgen Dir : ĠFile ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproject . kot less . config . gen Directory ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġgenerate () Ġ{ ĊĠĠĠĠĠĠĠ Ġgen Dir . delete Re cursively () ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġd sl . to Schema () ĊĊĠĠĠĠĠĠĠ Ġval Ġlamb das Ġ= ĠTyped Storage < Lambda >() ĊĠĠĠĠĠĠĠ Ġval Ġstatic s Ġ= ĠTyped Storage < Static Resource >() ĊĊĠĠĠĠĠĠĠ Ġval Ġwebapp Ġ= Ġd sl . webapp . let Ġ{ Ġwebapp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġwebapp . project ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsources Ġ= Ġproject . my Kt Source Set ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshadow Jar Ġ= Ġproject . my Shadow Jar (). archive File . get (). as File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdependencies Ġ= Ġproject . configurations . get ByName ( project . kot less . config . configuration Name ). files . toSet () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda Ġ= ĠLambda . Config ( webapp . lambda . memory Mb , Ġwebapp . lambda . timeout Sec , Ġwebapp . packages ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠK ot less Parser . parse ( sources , Ġshadow Jar , Ġconfig , Ġlambda , Ġdependencies ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlamb das . addAll ( result . resources . dynamics ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic s . addAll ( result . resources . static s ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute 5 3 Ġ= Ġwebapp . route 5 3 ?. to Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWeb app ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute 5 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb app . Api Gateway ( project . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwebapp . deployment . to Schema (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . routes . dynamics , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . routes . static s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb app . Events ( result . events . scheduled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠSchema ( config , Ġwebapp , Ġlamb das , Ġstatic s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerated Ġ= ĠK ot less Engine . generate ( schema ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġd sl . extensions . terraform . files . additional ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( generated . all Ġ{ Ġit . name Ġ!= Ġfile . name Ġ}) Ġ{ Ġ" Ext ending Ġterraform Ġfile Ġwith Ġname Ġ${ file . name } Ġcl ashes Ġwith Ġgenerated Ġfile " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . copy File ( file , ĠFile ( gen Dir , Ġfile . name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ