import Ġcom . google . protobuf . gradle . generate Proto Tasks Ċ import Ġcom . google . protobuf . gradle . protobuf Ċ import Ġcom . google . protobuf . gradle . protoc Ċ import Ġcom . google . protobuf . gradle . id Ċ import Ġcom . google . protobuf . gradle . plugins Ċ import Ġorg . jetbrains . changelog . markdown To HTML Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ Ċ fun Ġproperties ( key : ĠString ) Ġ= Ġproject . find Property ( key ). toString () Ċ Ċ val Ġcor outines Version Ġby Ġextra (" 1 . 5 . 2 ") Ċ val Ġprotobuf Version Ġby Ġextra (" 3 . 1 8 . 0 ") Ċ val Ġgrpc Version Ġby Ġextra (" 1 . 4 0 . 1 ") Ċ val Ġgrpc Kotlin Version Ġby Ġextra (" 1 . 1 . 0 ") Ċ val Ġplatform Type : ĠString Ġby Ġproject Ċ val Ġplatform Version : ĠString Ġby Ġproject Ċ Ċ build script Ġ{ ĊĠĠĠ Ġval Ġprotobuf Plug In Version Ġby Ġextra (" 0 . 8 . 1 7 ") ĊĠĠĠ Ġval Ġkotlin Version Ġby Ġextra (" 1 . 5 . 3 0 ") ĊĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġclasspath (" com . google . protobuf : protobuf - gradle - plugin :$ protobuf Plug In Version ") ĊĠĠĠĠĠĠĠ Ġclasspath (" org . jetbrains . kotlin : kotlin - gradle - plugin :$ kotlin Version ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġ// ĠJava Ġsupport ĊĠĠĠ Ġid (" java ") ĊĠĠĠ Ġ// ĠKotlin Ġsupport ĊĠĠĠ Ġid (" org . jetbrains . kotlin . jvm ") Ġversion Ġ" 1 . 6 . 1 0 " ĊĠĠĠ Ġ// ĠGradle ĠIntelliJ ĠPlugin ĊĠĠĠ Ġid (" org . jetbrains . intellij ") Ġversion Ġ" 1 . 3 . 1 " ĊĠĠĠ Ġ// ĠGradle ĠChangelog ĠPlugin ĊĠĠĠ Ġid (" org . jetbrains . changelog ") Ġversion Ġ" 1 . 3 . 0 " ĊĠĠĠ Ġ// ĠGradle ĠQ od ana ĠPlugin ĊĠĠĠ Ġid (" org . jetbrains . q od ana ") Ġversion Ġ" 0 . 1 . 1 2 " ĊĠĠĠ Ġ// Ġserialization ĊĠĠĠ Ġkotlin (" plugin . serialization ") Ġversion Ġ" 1 . 6 . 1 0 " ĊĠĠĠ Ġid (" com . google . protobuf ") Ġversion Ġ" 0 . 8 . 1 5 " ĊĠĠĠ Ġidea ĊĠĠĠ Ġapplication Ċ } Ċ Ċ java . source Compatibility Ġ= ĠJava Version . VERSION _ 1 1 Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin : kotlin - reflect ") ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin : kotlin - stdlib - jdk 8 ") ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin x : kotlin x - coroutines - core :$ coroutines Version ") ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin x : kotlin x - coroutines - swing :$ coroutines Version ") ĊĊĠĠĠ Ġ// Ġgrpc Ġand Ġprotobuf ĊĠĠĠ Ġimplementation (" com . google . protobuf : protobuf - java :$ protobuf Version ") ĊĠĠĠ Ġimplementation (" com . google . protobuf : protobuf - java - util :$ protobuf Version ") ĊĠĠĠ Ġimplementation (" io . grpc : grpc - netty - sh aded :$ grpc Version ") ĊĠĠĠ Ġimplementation (" io . grpc : grpc - protobuf :$ grpc Version ") ĊĠĠĠ Ġimplementation (" io . grpc : grpc - stub :$ grpc Version ") ĊĠĠĠ Ġimplementation (" io . grpc : grpc - kotlin - stub :$ grpc Kotlin Version ") ĊĠĠĠ Ġcompile Only (" javax . annotation : javax . annotation - api : 1 . 3 . 2 ") ĊĠĠĠ Ġimplementation (" com . google . protobuf : protobuf - kotlin :$ protobuf Version ") ĊĊĠĠĠ Ġimplementation (" org . slf 4 j : slf 4 j - api : 1 . 7 . 3 0 ") ĊĠĠĠ Ġimplementation (" ch . qos . log back : log back - core : 1 . 2 . 3 ") ĊĠĠĠ Ġimplementation (" ch . qos . log back : log back - classic : 1 . 2 . 3 ") ĊĠĠĠ Ġimplementation (" io . github . micro utils : kotlin - logging - jvm : 2 . 1 . 2 0 ") ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin : kotlin - reflect : 1 . 6 . 0 ") ĊĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin x : kotlin x - serialization - core : 1 . 3 . 2 ") Ċ } Ċ Ċ protobuf Ġ{ ĊĠĠĠ Ġproto c Ġ{ ĊĠĠĠĠĠĠĠ Ġartifact Ġ= Ġ" com . google . protobuf : protoc : 3 . 1 0 . 1 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġplugins Ġ{ ĊĠĠĠĠĠĠĠ Ġid (" grpc ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Ġ= Ġ" io . grpc : protoc - gen - grpc - java : 1 . 3 3 . 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġid (" grp ck t ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Ġ= Ġ" io . grpc : protoc - gen - grpc - kotlin : 0 . 1 . 5 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgenerate Proto Tasks Ġ{ ĊĠĠĠĠĠĠĠ Ġall (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . plugins Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" grpc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid (" grp ck t ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ idea Ġ{ ĊĠĠĠ Ġmodule Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Dirs . add ( File ("$ project Dir / src / generated / main / java ")) ĊĠĠĠĠĠĠĠ Ġsource Dirs . add ( File ("$ project Dir / src / generated / main / grpc ")) ĊĠĠĠĠĠĠĠ Ġsource Dirs . add ( File ("$ project Dir / src / generated / main / grp ck t ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ group Ġ= Ġproperties (" plugin Group ") Ċ version Ġ= Ġproperties (" plugin Version ") Ċ Ċ // ĠConfigure Ġproject 's Ġdependencies Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Central () Ċ } Ċ Ċ // ĠConfigure ĠGradle ĠIntelliJ ĠPlugin Ġ- Ġread Ġmore : Ġhttps :// github . com / Jet Brains / gradle - intellij - plugin Ċ intellij Ġ{ ĊĠĠĠ Ġplugin Name . set ( properties (" plugin Name ")) ĊĠĠĠ Ġ// Ġuse ĠCL ion Ġversion Ġ 2 0 2 1 . 2 . 2 ĊĠĠĠ Ġversion . set ( platform Version ) ĊĠĠĠ Ġtype . set ( platform Type ) ĊĠĠĠ Ġupdate Since Until Build . set ( true ) ĊĊĠĠĠ Ġ// Ġto Ġuse Ġauto - reload Ġfor Ġide Ġinstance ĊĠĠĠ Ġtasks . build Search able Options . get (). enabled Ġ= Ġfalse ĊĠĠĠ Ġtasks . run Ide . get (). auto Reload Plugins . set ( true ) ĊĊĠĠĠ Ġ// ĠPlugin ĠDependencies . ĠUses Ġ` platform Plugins ` Ġproperty Ġfrom Ġthe Ġgradle . properties Ġfile . ĊĠĠĠ Ġplugins . set ( properties (" platform Plugins "). split (',' ). map ( String :: trim ). filter ( String :: isNotEmpty )) Ċ } Ċ Ċ // ĠConfigure ĠGradle ĠChangelog ĠPlugin Ġ- Ġread Ġmore : Ġhttps :// github . com / Jet Brains / gradle - changelog - plugin Ċ changelog Ġ{ ĊĠĠĠ Ġversion . set ( properties (" plugin Version ")) ĊĠĠĠ Ġgroups . set ( emptyList ()) Ċ } Ċ Ċ // ĠConfigure ĠGradle ĠQ od ana ĠPlugin Ġ- Ġread Ġmore : Ġhttps :// github . com / Jet Brains / gradle - q od ana - plugin Ċ q od ana Ġ{ ĊĠĠĠ Ġcache Path . set ( project Dir . resolve (". q od ana "). canonical Path ) ĊĠĠĠ Ġreport Path . set ( project Dir . resolve (" build / reports / ins pe ctions "). canonical Path ) ĊĠĠĠ Ġsave Report . set ( true ) ĊĠĠĠ Ġshow Report . set ( System . getenv (" Q OD ANA _ SHOW _ REPORT "). to Boolean ()) Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġ// ĠSet Ġthe ĠJVM Ġcompatibility Ġversions ĊĠĠĠ Ġproperties (" java Version "). let Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Type < Java Compile > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith Type < Kotlin Compile > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options . free Compiler Args Ġ= ĠlistOf ("- X js r 3 0 5 = strict ", Ġ"- X opt - in = kotlin . Requires Opt In ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġ" 1 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwrapper Ġ{ ĊĠĠĠĠĠĠĠ Ġgradle Version Ġ= Ġproperties (" gradle Version ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpatch Plugin Xml Ġ{ ĊĠĠĠĠĠĠĠ Ġversion . set ( properties (" plugin Version ")) ĊĠĠĠĠĠĠĠ Ġsince Build . set ( properties (" plugin Since Build ")) ĊĠĠĠĠĠĠĠ Ġuntil Build . set ( properties (" plugin Until Build ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠExtract Ġthe Ġ<!-- ĠPlugin Ġdescription Ġ--> Ġsection Ġfrom ĠREADME . md Ġand Ġprovide Ġfor Ġthe Ġplugin 's Ġmanifest ĊĠĠĠĠĠĠĠ Ġplugin Description . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Dir . resolve (" README . md "). read Text (). lines (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġ" <!-- ĠPlugin Ġdescription Ġ--> " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġ" <!-- ĠPlugin Ġdescription Ġend Ġ--> " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains All ( listOf ( start , Ġend ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" Plugin Ġdescription Ġsection Ġnot Ġfound Ġin ĠREADME . md :\ n $ start Ġ... Ġ$ end ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub List ( indexOf ( start ) Ġ+ Ġ 1 , ĠindexOf ( end )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ("\ n "). run Ġ{ Ġmarkdown To HTML ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġlatest Ġavailable Ġchange Ġnotes Ġfrom Ġthe Ġchangelog Ġfile ĊĠĠĠĠĠĠĠ Ġchange Notes . set ( provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchangelog . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrNull ( properties (" plugin Version ")) Ġ?: Ġget Latest () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to HTML () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrun Plugin Verifier Ġ{ ĊĠĠĠĠĠĠĠ Ġide Versions . set ( properties (" plugin Verifier Ide Versions "). split (',' ). map ( String :: trim ). filter ( String :: isNotEmpty )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠConfigure ĠUI Ġtests Ġplugin ĊĠĠĠ Ġ// ĠRead Ġmore : Ġhttps :// github . com / Jet Brains / intellij - ui - test - robot ĊĠĠĠ Ġrun Ide For Ui Tests Ġ{ ĊĠĠĠĠĠĠĠ Ġsystem Property (" robot - server . port ", Ġ" 8 0 8 2 ") ĊĠĠĠĠĠĠĠ Ġsystem Property (" ide . mac . message . dialogs . as . sheets ", Ġ" false ") ĊĠĠĠĠĠĠĠ Ġsystem Property (" jb . privacy . policy . text ", Ġ" <!-- 9 9 9 . 9 9 9 --> ") ĊĠĠĠĠĠĠĠ Ġsystem Property (" jb . cons ents . confirmation . enabled ", Ġ" false ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsign Plugin Ġ{ ĊĠĠĠĠĠĠĠ Ġcertificate Chain . set ( System . getenv (" CER TIFICATE _ CHAIN ")) ĊĠĠĠĠĠĠĠ ĠprivateKey . set ( System . getenv (" PRIVATE _ KEY ")) ĊĠĠĠĠĠĠĠ Ġpassword . set ( System . getenv (" PRIVATE _ KEY _ PASSWORD ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublish Plugin Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" patch Change log ") ĊĠĠĠĠĠĠĠ Ġtoken . set ( System . getenv (" PUBL ISH _ TOKEN ")) ĊĠĠĠĠĠĠĠ Ġ// Ġplugin Version Ġis Ġbased Ġon Ġthe ĠSem Ver Ġ( https :// semver . org ) Ġand Ġsupports Ġpre - release Ġlabels , Ġlike Ġ 2 . 1 . 7 - alpha . 3 ĊĠĠĠĠĠĠĠ Ġ// ĠSpecify Ġpre - release Ġlabel Ġto Ġpublish Ġthe Ġplugin Ġin Ġa Ġcustom ĠRelease ĠChannel Ġautomatically . ĠRead Ġmore : ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// plugins . jetbrains . com / docs / intellij / deployment . html # spec ifying - a - release - channel ĊĠĠĠĠĠĠĠ Ġchannels . set ( listOf ( properties (" plugin Version "). split ('- '). getOrElse ( 1 ) Ġ{ Ġ" default " Ġ}. split ('. '). first ())) ĊĠĠĠ Ġ} Ċ } Ċ