import Ġcom . diff plug . gradle . spot less . Spot less Extension Ċ import Ġio . gitlab . art urb os ch . de te kt . Det ek t Ċ import Ġjava . net . URL Ċ import Ġjava . util . jar . Attributes Ċ import Ġkotlinx . kn it . Kn it Plugin Extension Ċ import Ġorg . jetbrains . dok ka . Platform Ċ import Ġorg . jetbrains . dok ka . gradle . Abstract D ok ka Task Ċ import Ġorg . jetbrains . dok ka . gradle . D ok ka Task Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ import Ġorg . jre le aser . model . Active Ċ Ċ plugins Ġ{ ĊĠ Ġkotlin (" jvm ") Ġapply Ġfalse ĊĠ Ġid (" org . jetbrains . dok ka ") Ġapply Ġfalse ĊĠ Ġid (" com . diff plug . spot less ") ĊĠ Ġid (" io . gitlab . art urb os ch . de te kt ") ĊĠ Ġid (" io . github . gradle - nexus . publish - plugin ") ĊĠ Ġid (" org . jre le aser ") ĊĠ Ġid (" com . github . ben - man es . versions ") ĊĠ Ġid (" kotlin x - kn it ") Ċ } Ċ Ċ all projects Ġ{ ĊĠ Ġgroup Ġ= Ġ" io . github . c - fr aser " ĊĠ Ġversion Ġ= Ġ" 0 . 4 . 0 " ĊĊĠ Ġrepositories Ġ{ Ġmaven Central () Ġ} Ċ } Ċ Ċ sub projects Ġproject @{ ĊĠ Ġapply ( plugin Ġ= Ġ" org . jetbrains . kotlin . jvm ") ĊĠ Ġapply ( plugin Ġ= Ġ" org . jetbrains . dok ka ") ĊĠ Ġapply ( plugin Ġ= Ġ" io . gitlab . art urb os ch . de te kt ") ĊĊĠ Ġplugins . with Type < Java Library Plugin >() Ġ{ ĊĠĠĠ Ġconfigure < Java Plugin Extension > Ġ{ ĊĠĠĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 1 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġdependencies Ġ{ ĊĠĠĠ Ġval Ġjunit Version : ĠString Ġby Ġroot Project ĊĊĠĠĠ Ġ" implementation "( kotlin (" stdlib ")) ĊĠĠĠ Ġ" test Implementation "( kotlin (" test ")) ĊĠĠĠ Ġ" test Implementation "( kotlin (" test - junit 5 ")) ĊĠĠĠ Ġ" test Implementation " (" org . junit . jupiter : junit - jupiter - api :$ junit Version ") ĊĠĠĠ Ġ" test Runtime Only " (" org . junit . jupiter : junit - jupiter - engine :$ junit Version ") ĊĠ Ġ} ĊĊĠ Ġtasks Ġ{ ĊĠĠĠ Ġwith Type < Kotlin Compile >(). configure Each Ġ{ ĊĠĠĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Target Ġ= Ġ"${ Java Version . VERSION _ 1 1 }" ĊĠĠĠĠĠĠĠ Ġfree Compiler Args Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X js r 3 0 5 = strict ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X jvm - default = all ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X opt - in = kotlin . Requires Opt In ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X opt - in = io . github . cf ras er . con ne kt . api . Internal Con ne kt Api ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X opt - in = kotlin x . coroutines . Del icate Cor outines Api ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- X opt - in = kotlin x . coroutines . Experimental Cor outines Api ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Jar > Ġ{ ĊĠĠĠĠĠ Ġmanifest Ġ{ ĊĠĠĠĠĠĠĠ Ġattributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Attributes . Name . IMPLEMENT ATION _ TITLE }" Ġto Ġthis @ project . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Attributes . Name . IMPLEMENT ATION _ VERSION }" Ġto Ġthis @ project . version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Automatic - Module - Name " Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" io . github . cf ras er . con ne kt .${ this @ project . name . remove Prefix ("${ root Project . name }- ") }") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Test > Ġ{ Ġuse JUnit Platform Ġ{ Ġexclude Tags (" integration ") Ġ} Ġ} ĊĊĠĠĠ Ġregister < Test >(" integration Test ") Ġ{ ĊĠĠĠĠĠ Ġdescription Ġ= Ġ" Runs Ġtests Ġannotated Ġwith Ġ' integration ' Ġtag " ĊĊĠĠĠĠĠ Ġuse JUnit Platform Ġ{ Ġinclude Tags (" integration ") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < D ok ka Task >(). configure Each Ġ{ ĊĠĠĠĠĠ Ġdok ka Source Sets Ġ{ ĊĠĠĠĠĠĠĠ Ġnamed (" main ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠmoduleName . set ( this @ project . name ) ĊĠĠĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ Ġthis @ project . file (" MODULE . md "). take If Ġ{ Ġit . exists () Ġ} !! Ġ}. on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Documentation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincludes . from ( module Documentation ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġplatform . set ( Platform . jvm ) ĊĠĠĠĠĠĠĠĠĠ Ġj dk Version . set ( Java Version . VERSION _ 1 1 . ordinal ) ĊĠĠĠĠĠĠĠĠĠ Ġsource Link Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Directory . set ( this @ project . file (" src / main / kotlin ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Url . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// github . com / c - fr aser / con ne kt / tree / main /${ this @ project . name }/ src / main / kotlin ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Line Suffix . set ("# L ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Det ek t > Ġ{ ĊĠĠĠĠĠ Ġj vm Target Ġ= Ġ"${ Java Version . VERSION _ 1 1 }" ĊĠĠĠĠĠ Ġbuild Up on Default Config Ġ= Ġtrue ĊĠĠĠĠĠ Ġconfig . set From ( rootDir . resolve (" de te kt . yml ")) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġplugins . with Type < Maven Publish Plugin > Ġ{ ĊĠĠĠ Ġconfigure < Publishing Extension > Ġ{ ĊĠĠĠĠĠ Ġval Ġdok ka Javadoc Jar Ġby ĊĠĠĠĠĠĠĠĠĠ Ġtasks . creating ( Jar :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdok ka Javadoc Ġby Ġtasks . getting ( Abstract D ok ka Task :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( dok ka Javadoc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set (" javadoc ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( dok ka Javadoc . output Directory . get ()) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġsources Jar Ġby ĊĠĠĠĠĠĠĠĠĠ Ġtasks . creating ( Jar :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Sets : ĠSource Set Container Ġby Ġthis @ project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( tasks [" classes "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarchive Classifier . set (" sources ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( source Sets [" main "]. all Source ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpublications Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate < Maven Publication >(" maven ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfrom ( this @ project . components [" java "]) ĊĠĠĠĠĠĠĠĠĠ Ġartifact ( dok ka Javadoc Jar ) ĊĠĠĠĠĠĠĠĠĠ Ġartifact ( sources Jar ) ĊĠĠĠĠĠĠĠĠĠ Ġpom Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . set ( this @ project . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . set ("${ this @ project . name }-${ this @ project . version }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / c - fr aser / con ne kt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin ception Year . set (" 2 0 2 1 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġissue Management Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem . set (" GitHub ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / c - fr aser / con ne kt / issues ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" The ĠApache ĠSoftware ĠLicense , ĠVersion Ġ 2 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// www . apache . org / licenses / LICENSE - 2 . 0 . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistribution . set (" repo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevelopers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid . set (" c - fr aser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . set (" Ch ris ĠFr aser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . set (" https :// github . com / c - fr aser / con ne kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . set (" scm : git : git :// github . com / c - fr aser / con ne kt . git ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Connection . set (" scm : git : ssh :// git @ github . com / c - fr aser / con ne kt . git ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġplugins . with Type < Signing Plugin >() Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure < Signing Extension > Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpublications . with Type < Maven Publication >(). all Ġmaven Publication @{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse InMemory P gp Keys ( System . getenv (" G PG _ SIGN ING _ KEY "), ĠSystem . getenv (" G PG _ PASSWORD ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign ( this @ maven Publication ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ configure < Spot less Extension > Ġ{ ĊĠ Ġval Ġkt fmt Version : ĠString Ġby Ġroot Project ĊĊĠ Ġval Ġlicense Header Ġ= ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠ ĠCopyright Ġ 2 0 2 1 Ġc - fr aser ĊĊĠĠĠĠĠ Ġ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 ĊĊĠĠĠĠĠĠĠĠĠ Ġhttps :// 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 . ĊĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠ Ġkotlin Ġ{ ĊĠĠĠ Ġkt fmt ( kt fmt Version ) ĊĠĠĠ Ġlicense Header ( license Header ) ĊĠĠĠ Ġtarget ( ĊĠĠĠĠĠĠĠ Ġfile Tree ( root Project . rootDir ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠExclude Ġthe Ġfiles Ġautomatically Ġgenerated Ġby Ġ` kotlin x - kn it ` ĊĠĠĠĠĠĠĠĠĠ Ġexclude (" examples / src /*/ kotlin / io / github / cf ras er / con ne kt / example / kn it /*. kt ") ĊĠĠĠĠĠĠĠĠĠ Ġinclude (" **/ src /**/*. kt ") ĊĠĠĠĠĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġkotlin Gradle Ġ{ Ġkt fmt ( kt fmt Version ) Ġ} ĊĊĠ Ġjava Ġ{ ĊĠĠĠ Ġgoogle Java Format () ĊĠĠĠ Ġlicense Header ( license Header ) ĊĠĠĠ Ġtarget ( file Tree ( root Project . rootDir ) Ġ{ Ġinclude (" **/ src /**/*. java ") Ġ}) ĊĠ Ġ} Ċ } Ċ Ċ nexus Publishing Ġ{ ĊĠ Ġrepositories Ġ{ ĊĠĠĠ Ġson atype Ġ{ ĊĠĠĠĠĠ Ġn exus Url . set ( uri (" https :// s 0 1 . oss . son atype . org / service / local / ")) ĊĠĠĠĠĠ Ġsnapshot Repository Url . set ( uri (" https :// s 0 1 . oss . son atype . org / content / repositories / snapshots / ")) ĊĠĠĠĠĠ Ġusername . set ( System . getenv (" SON AT YPE _ USERNAME ")) ĊĠĠĠĠĠ Ġpassword . set ( System . getenv (" SON AT YPE _ PASSWORD ")) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ jre le aser Ġ{ ĊĠ Ġproject Ġ{ ĊĠĠĠ Ġwebsite . set (" https :// github . com / c - fr aser / con ne kt ") ĊĠĠĠ Ġauthors . set ( listOf (" c - fr aser ")) ĊĠĠĠ Ġlicense . set (" Apache - 2 . 0 ") ĊĠĠĠ Ġextra Properties . put (" inception Year ", Ġ" 2 0 2 1 ") ĊĠ Ġ} ĊĊĠ Ġrelease Ġ{ ĊĠĠĠ Ġgithub Ġ{ ĊĠĠĠĠĠ Ġowner . set (" c - fr aser ") ĊĠĠĠĠĠ Ġoverwrite . set ( true ) ĊĠĠĠĠĠ Ġtoken . set ( System . getenv (" GITHUB _ TOKEN "). or Empty ()) ĊĠĠĠĠĠ Ġchangelog Ġ{ ĊĠĠĠĠĠĠĠ Ġformatted . set ( Active . ALWAYS ) ĊĠĠĠĠĠĠĠ Ġformat . set ("- Ġ{{ commit Short Hash }} Ġ{{ commit Title }} ") ĊĠĠĠĠĠĠĠ Ġcontributors . enabled . set ( false ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( status Ġin ĠlistOf (" added ", Ġ" changed ", Ġ" fixed ", Ġ" removed ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlabel er Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel . set ( status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . set ( status ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcategory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . set ( status . capitalize ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . set ( listOf ( status )) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ configure < Kn it Plugin Extension > Ġ{ ĊĠ Ġsite Root Ġ= Ġ" https :// github . com / c - fr aser / con ne kt " ĊĠ Ġfiles Ġ= Ġfile Tree ( root Project . rootDir ) Ġ{ Ġinclude (" README . md ") Ġ} ĊĠ Ġroot Dir Ġ= Ġroot Project . rootDir Ċ } Ċ Ċ tasks Ġ{ ĊĠ Ġval Ġde te kt All Ġby ĊĠĠĠĠĠ Ġregistering ( Det ek t :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Target Ġ= Ġ"${ Java Version . VERSION _ 1 1 }" ĊĠĠĠĠĠĠĠ Ġparallel Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbuild Up on Default Config Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġconfig . set From ( rootDir . resolve (" de te kt . yml ")) ĊĠĠĠĠĠĠĠ Ġset Source ( files ( project Dir )) ĊĠĠĠĠĠĠĠ Ġinclude (" ** /*. kt ", Ġ"** /*. k ts ") ĊĠĠĠĠĠĠĠ Ġexclude ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" **/ build /** ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" **/ resources /** ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠExclude Ġthe Ġfiles Ġautomatically Ġgenerated Ġby Ġ` kotlin x - kn it ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" examples / src /*/ kotlin / io / github / cf ras er / con ne kt / example / kn it /*. kt ") ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġspot less Apply Ġ{ Ġfinal ized By ( de te kt All ) Ġ} Ċ } Ċ