import Ġorg . jetbrains . intellij . tasks . Publish Task Ċ import Ġorg . jetbrains . kotlin . gradle . tasks . Kotlin Compile Ċ Ċ repositories Ġ{ ĊĠĠĠ Ġmaven Central () ĊĠĠĠ Ġmaven Ġ{ ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġuri (" http :// dl . bin tray . com / jetbrains / intellij - plugin - service ") ĊĠĠĠ Ġ} Ċ } Ċ build script Ġ{ ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath ( kotlin (" gradle - plugin ", Ġversion Ġ= Ġ" 1 . 3 . 2 1 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ plugins Ġ{ ĊĠĠĠ Ġidea Ġapply Ġtrue ĊĠĠĠ Ġkotlin (" jvm ") Ġversion Ġ" 1 . 3 . 6 1 " ĊĠĠĠ Ġid (" org . jetbrains . intellij ") Ġversion Ġ" 0 . 5 . 0 " Ċ } Ċ apply Ġ{ ĊĠĠĠ Ġplugin (" java ") ĊĠĠĠ Ġplugin (" kotlin ") ĊĠĠĠ Ġplugin (" org . jetbrains . intellij ") Ċ } Ċ Ċ println (" Version : Ġ$ version ") Ċ tasks Ġ{ ĊĠĠĠ Ġwith Type < Kotlin Compile > Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin Options . jvm Target Ġ= ĠJava Version . VERSION _ 1 _ 8 . toString () ĊĠĠĠĠĠĠĠ Ġkotlin Options . free Compiler Args Ġ+= Ġ"- progress ive " ĊĠĠĠ Ġ} ĊĠĠĠ Ġregister (" copy Ins pe ctions ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblocks (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" src / main / resources / inspection Descriptions /" Ġ+ Ġit . file (). name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . full () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġregister (" check Read me ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( readme File (). read Text () Ġ!= Ġgenerated Read me Content ( readme File ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" Read me Ġis Ġnot Ġup Ġto Ġdate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġregister (" update Read me ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreadme Ġ= Ġreadme File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( write ( readme , Ġgenerated Read me Content ( readme ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Read me Ġupdated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġpatch Plugin Xml Ġ{ ĊĠĠĠĠĠĠĠ Ġuntil Build ("") ĊĠĠĠĠĠĠĠ Ġchange Notes ( project . property (" change Notes "). toString (). replace ("\ n ", Ġ"< br >\ n ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġnamed < Zip >(" build Plugin ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" test ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġnamed < Publish Task >(" publish Plugin ") Ġ{ ĊĠĠĠĠĠĠĠ Ġset Channels ( prop (" intellij Publish Channel ")) ĊĠĠĠĠĠĠĠ Ġset Token ( prop (" intellij Publish Token ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġnamed (" test "){ ĊĠĠĠĠĠĠĠ Ġdepends On (" check Read me ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġnamed (" build Plugin ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" copy Ins pe ctions ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġnamed (" run Ide ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdepends On (" copy Ins pe ctions ") ĊĠĠĠ Ġ} Ċ } Ċ intellij Ġ{ ĊĠĠĠ Ġversion Ġ= Ġprop (" idea Version ") ĊĠĠĠ Ġsandbox Directory Ġ= Ġproject . rootDir . canonical Path Ġ+ Ġ"/ build / idea - sandbox " ĊĠĠĠ Ġdownload Sources Ġ= Ġfalse ĊĠĠĠ Ġupdate Since Until Build Ġ= Ġtrue ĊĠĠĠ Ġplugin Name Ġ= Ġname ĊĠĠĠ Ġset Plugins ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . jetbrains . php :${ prop (" php Plugin Version ") }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CSS ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" java ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" java - i 1 8 n ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Psi Viewer : 3 . 2 8 . 9 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" properties " ĊĠĠĠ Ġ) Ċ } Ċ dependencies Ġ{ ĊĠĠĠ Ġcompile Only ( kotlin (" stdlib - jdk 8 ")) Ċ } Ċ fun Ġprop ( name : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġextra . properties [ name ] Ġas ? ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Property Ġ`$ name ` Ġis Ġnot Ġdefined Ġin Ġgradle . properties ") Ċ } Ċ Ċ fun Ġsafe Prop ( name : ĠString , Ġfallback : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġextra . properties [ name ] Ġas ? ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfallback Ċ } Ċ Ċ fun Ġwrite ( file : ĠFile , Ġcontent : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( file . read Text () Ġ!= Ġcontent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfile . write Text ( content ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ class ĠBlock ( private Ġval Ġfile : ĠFile ) Ġ{ ĊĠĠĠ Ġfun Ġfile () Ġ= Ġfile ĊĠĠĠ Ġfun Ġuid () Ġ= Ġfile . name . replace (" Inspection . html ", Ġ"") ĊĠĠĠ Ġfun Ġfull () Ġ= Ġfile . read Text () ĊĠĠĠ Ġfun Ġshort () Ġ= Ġfull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( Regex (" <!-- Ġmain Ġ--> (.* )", ĠRegex Option . DOT _ MATCH ES _ ALL ), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. trim () Ċ } Ċ Ċ fun Ġblocks () Ġ= ĠFile (" src / main / kotlin / com / fun iv an / idea / php Clean / ins pe ctions ") ĊĠĠĠĠĠĠĠ Ġ. walk Top Down () ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name . contains (" Inspection . kt ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠBlock ( File ( it . path . replace (". kt ", Ġ". html "))) Ġ} Ċ Ċ fun Ġgenerated Read me Content ( readme : ĠFile ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġcontent Ġ= Ġreadme . read Text () ĊĠĠĠ Ġcontent Ġ= Ġcontent . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegex ("( <!-- Ġins pe ctions Ġ--> )( .+ )", ĠRegex Option . DOT _ MATCH ES _ ALL ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ 1 " ĊĠĠĠ Ġ) ĊĠĠĠ Ġcontent Ġ= Ġcontent Ġ+ Ġ"\ n " Ġ+ Ġblocks (). sorted By Ġ{ Ġit . uid () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġit . short (). replace ("< pre >", Ġ" ``` php "). replace ("</ pre >", Ġ" ``` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" #### Ġ${ it . uid () }\ n $ description \ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("") ĊĠĠĠ Ġreturn Ġcontent Ċ } Ċ Ċ fun Ġreadme File () Ġ= ĠFile (" README . md ") Ċ