package Ġcom . github . tur ans ky . k fc . gradle . plugin Ċ Ċ import Ġcom . github . tur ans ky . k fc . gradle . plugin . Gradle Property . GROUP Ċ import Ġcom . github . tur ans ky . k fc . gradle . plugin . Gradle Property . VERSION Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . tasks . bund ling . Jar Ċ import Ġorg . gradle . kotlin . dsl . apply Ċ import Ġorg . gradle . kotlin . dsl . invoke Ċ import Ġorg . gradle . kotlin . dsl . named Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Jvm Compile Ċ import Ġjava . io . File Ċ Ċ private Ġconst Ġval ĠGR AD LE _ PLUGIN _ PREFIX Ġ= Ġ" gradle . plugin ." Ċ private Ġval ĠUSE _ GRAD LE _ PLUGIN _ PREFIX Ġ= ĠBoolean Property (" k fc . gradle . plugin . prefix ") Ċ Ċ class ĠPlugin Publish Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ): ĠUnit Ġ= Ġwith ( target ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Project . plugins . apply ( Root Plugin Publish Plugin :: class ) ĊĊĠĠĠĠĠĠĠ Ġtasks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Each < Kotlin Jvm Compile > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Warnings As Errors Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed < Jar >(" jar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinto (" META - INF ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ("$ project Dir / LICENSE . md ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠRoot Plugin Publish Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ): ĠUnit Ġ= Ġwith ( target ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuse Gradle Plugin Prefix Ġ= Ġproperty ( USE _ GRAD LE _ PLUGIN _ PREFIX ) ĊĊĠĠĠĠĠĠĠ Ġtasks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister (" prepare Publish ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Version ( Version :: to Release , Ġproject . version Files ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Gradle Plugin Prefix ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Group ( add Prefix Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister (" prepare Development ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Version ( Version :: to Next Snapshot , Ġproject . version Files ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Gradle Plugin Prefix ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Group ( add Prefix Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠProject . version Files (): ĠSet < File > Ġ= ĊĠĠĠ Ġfile Tree ( project Dir ) ĊĠĠĠĠĠĠĠ Ġ. matching Ġ{ Ġinclude (" **/ src / main / kotlin /** / Kotlin Plugin Artifact . kt ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. files Ċ Ċ private Ġfun ĠProject . change Group ( add Prefix : ĠBoolean ) Ġ{ ĊĠĠĠ Ġvar Ġgroup Ġ= Ġgroup . toString () ĊĠĠĠ Ġgroup Ġ= Ġif Ġ( add Prefix ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"$ GRAD LE _ PLUGIN _ PREFIX $ group " ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup . remove Prefix ( GRAD LE _ PLUGIN _ PREFIX ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġset Gradle Property ( GROUP , Ġgroup ) Ċ } Ċ Ċ private Ġfun ĠProject . change Version ( ĊĠĠĠ Ġchange : Ġ( Version ) Ġ-> ĠVersion , ĊĠĠĠ Ġversion Files : ĠSet < File >, Ċ ) Ġ{ ĊĠĠĠ Ġval Ġold Version Ġ= Ġcurrent Version . toString () ĊĠĠĠ Ġval Ġnew Version Ġ= Ġchange ( current Version ). toString () ĊĊĠĠĠ Ġset Gradle Property ( VERSION , Ġnew Version ) ĊĠĠĠ Ġversion Ġ= Ġnew Version ĊĊĠĠĠ Ġfor Ġ( file Ġin Ġversion Files ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġfile . read Text () ĊĠĠĠĠĠĠĠ Ġval Ġnew Content Ġ= Ġcontent . replace ( old Version , Ġnew Version ) ĊĊĠĠĠĠĠĠĠ Ġcheck ( content Ġ!= Ġnew Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unable Ġto Ġfound Ġplugin Ġversion Ġin Ġfile : Ġ$ file " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfile . write Text ( new Content ) ĊĠĠĠ Ġ} Ċ } ĊĊ