import Ġorg . jetbrains . changelog . markdown To HTML Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ fun Ġproperties ( key : ĠString ) Ġ= Ġproject . find Property ( key ). toString () Ċ Ċ 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 . 4 . 0 " ĊĠĠĠ Ġ// ĠGradle ĠChangelog ĠPlugin ĊĠĠĠ Ġid (" org . jetbrains . changelog ") Ġversion Ġ" 1 . 3 . 1 " Ċ } Ċ val Ġplugin Major Version : ĠString Ġby Ġproject Ċ val Ġplugin Variant Version : ĠString Ġby Ġproject Ċ val Ġvariant Version Part Ġ= Ġplugin Variant Version . take If Ġ{ Ġit . isNotBlank () Ġ} ?. let Ġ{ Ġ"- $ it " Ġ} Ġ?: Ġ"" Ċ val Ġplugin Version Ġ= Ġ"$ plugin Major Version $ variant Version Part " Ċ val Ġfull Plugin Version Ġ= Ġplugin Version Ċ Ċ val Ġversion Regex Ġ= ĠRegex (" v (\\ d ( \\. \\ d + )+ (- ([ 0 - 9 a - zA - Z ]+ (\\ .[ 0 - 9 a - zA - Z ]+ )* )) ?) ") Ċ if Ġ(! version Regex . matches (" v $ full Plugin Version ")) Ġ{ ĊĠĠĠ Ġthrow ĠGradle Exception (" Plugin Ġversion Ġ' v $ full Plugin Version ' Ġdoes Ġnot Ġmatch Ġthe Ġpattern Ġ'$ version Regex '") Ċ } ĊĊ Ċ extra [" plugin Version "] Ġ= Ġplugin Version Ċ extra [" full Plugin Version "] Ġ= Ġfull Plugin Version ĊĊ Ċ group Ġ= Ġproperties (" plugin Group ") Ċ version Ġ= Ġfull Plugin Version Ċ Ċ // ĠConfigure Ġproject 's Ġdependencies Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Local () ĊĠĠĠ Ġmaven Central () Ċ } Ċ Ċ kotlin Ġ{ ĊĠĠĠ Ġj vm Tool chain Ġ{ ĊĠĠĠĠĠĠĠ Ġ( this Ġas ĠJava Tool chain Spec ). language Version . set ( Java Language Version . of ( 1 1 )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠConfigure ĠGradle ĠIntelliJ ĠPlugin Ġ- Ġread Ġmore : Ġhttps :// github . com / Jet Brains / gradle - intellij - plugin Ċ intellij Ġ{ ĊĠĠĠ Ġplugin Name . set ( properties (" plugin Name ")) ĊĠĠĠ Ġversion . set ( properties (" platform Version ")) ĊĠĠĠ Ġtype . set ( properties (" platform Type ")) ĊĊĠĠĠ Ġ// Ġ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 Ġ{ ĊĠĠĠ Ġval Ġdate Ġ= ĠLocalDate . now ( Zone Id . of (" Asia / Sh ang hai ")) ĊĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" yyyy / MM / dd ") ĊĊĠĠĠ Ġversion . set ( plugin Version ) ĊĠĠĠ Ġheader . set ( provider Ġ{ Ġ" v ${ version . get ()} Ġ(${ date . format ( formatter )}) " Ġ}) ĊĠĠĠ Ġheader Parser Regex . set ( version Regex ) ĊĠĠĠ Ġgroups . set ( emptyList ()) Ċ } Ċ Ċ tasks Ġ{ Ċ // ĠĠĠ Ġrun Ide Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġj vm Args Ġ= ĠlistOf ("-- add - exports ", Ġ" java . base / jdk . internal . vm = ALL - UN NAMED ") Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġbuild Search able Options Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Args Ġ= ĠlistOf ("-- add - exports ", Ġ" java . base / jdk . internal . vm = ALL - UN NAMED ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest Ġ{ ĊĠĠĠĠĠĠĠ Ġignore Failures Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ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 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwrapper Ġ{ ĊĠĠĠĠĠĠĠ Ġgradle Version Ġ= Ġproperties (" gradle Version ") ĊĠĠĠĠĠĠĠ Ġdistribution Type Ġ= ĠWrapper . Distribution Type . ALL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ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 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchangelog Url Ġ= Ġ" https :// github . com / hao qi 1 2 3 / data - diff - plugin - kt / blob / main / CHANGELOG . md " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchangelog . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget OrNull (" v " Ġ+ Ġproperties (" plugin Version ")) Ġ?: Ġget Latest () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to HTML () Ġ+ Ġ"< br />< a Ġhref =\" ${ changelog Url }\ ">< b > Full ĠChangelog ĠHistory </ b ></ a >" ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ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 ())) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠSet Ġthe ĠJVM Ġcompatibility Ġversions ĊĠĠĠ Ġproperties (" java Version "). let Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Type < Java Compile > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . encoding Ġ= Ġ" UTF - 8 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith Type < Kotlin Compile > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < Process Resources > Ġ{ ĊĠĠĠĠĠĠĠ Ġfiles Matching (" ** /*. properties ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter ( org . apache . tools . ant . filters . Escape Unicode :: class ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }