package Ġorg . jl le its ch uh . gradle . kt lint Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Multi platform Extension Ċ import Ġorg . jetbrains . kotlin . gradle . dsl . Kotlin Project Extension Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Platform Type Ċ import Ġorg . jl le its ch uh . gradle . kt lint . android . apply Kt Lint To Android Ċ Ċ /** Ċ Ġ* ĠPlugin Ġthat Ġprovides Ġa Ġwrapper Ġover Ġthe Ġ` kt lint ` Ġproject . Ċ Ġ*/ Ċ @ Suppress (" Un stable Api Usage ") Ċ open Ġclass ĠK tl int Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠPlugin Holder ( target ) ĊĠĠĠĠĠĠĠ Ġ// ĠApply Ġthe Ġidea Ġplugin ĊĠĠĠĠĠĠĠ Ġtarget . plugins . apply ( K tl int Ide a Plugin :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġholder . add Kt Lint Tasks To Kotlin Plugin () ĊĠĠĠĠĠĠĠ Ġholder . add Kotlin Script Tasks () ĊĠĠĠĠĠĠĠ Ġholder . add Git Hook Tasks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPlugin Holder . add Kt Lint Tasks To Kotlin Plugin () Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . plugins . with Id (" kotlin ", Ġapply Kt Lint ()) ĊĠĠĠĠĠĠĠ Ġtarget . plugins . with Id (" org . jetbrains . kotlin . js ", Ġapply Kt Lint ()) ĊĠĠĠĠĠĠĠ Ġtarget . plugins . with Id (" kotlin - android ", Ġapply Kt Lint To Android ()) ĊĠĠĠĠĠĠĠ Ġtarget . plugins . with Id ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . jetbrains . kotlin . multi platform ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply K tl int Multi platform () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPlugin Holder . apply K tl int Multi platform (): Ġ( Plugin < in ĠAny >) Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmulti platform Extension Ġ= Ġtarget . extensions . getBy Type ( Kotlin Multi platform Extension :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġmulti platform Extension . source Sets . all Ġ{ Ġsource Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Task Ġ= Ġcreate Check Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . kotlin . source Directories ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tl int Check Task To Project Meta Check Task ( check Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Check Task Dep ends On K tl int Check Task ( target , Ġcheck Task ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk tl int Source Set Format Task Ġ= Ġcreate Format Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . kotlin . source Directories ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tl int Format Task To Project Meta Format Task ( kt lint Source Set Format Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmulti platform Extension . targets . all Ġ{ Ġkotlin Target Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( kotlin Target . platform Type Ġ== ĠKotlin Platform Type . android Jvm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Kt Lint To Android () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPlugin Holder . apply Kt Lint (): Ġ( Plugin < in ĠAny >) Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . extensions . configure < Kotlin Project Extension >(" kotlin ") Ġ{ Ġextension Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension . source Sets . all Ġ{ Ġsource Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Source Directories Ġ= Ġsource Set . kotlin . source Directories ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Task Ġ= Ġcreate Check Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Source Directories ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tl int Check Task To Project Meta Check Task ( check Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Check Task Dep ends On K tl int Check Task ( target , Ġcheck Task ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk tl int Source Set Format Task Ġ= Ġcreate Format Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin Source Directories ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd K tl int Format Task To Project Meta Format Task ( kt lint Source Set Format Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠPlugin Holder . add Kotlin Script Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Directory Script Files Ġ= Ġtarget . file Tree ( target . project Dir ) ĊĠĠĠĠĠĠĠ Ġproject Directory Script Files . include (" *. k ts ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcheck Task Ġ= Ġcreate Kotlin Script Check Task ( this , Ġproject Directory Script Files ) ĊĠĠĠĠĠĠĠ Ġadd K tl int Check Task To Project Meta Check Task ( check Task ) ĊĠĠĠĠĠĠĠ Ġset Check Task Dep ends On K tl int Check Task ( target , Ġcheck Task ) ĊĊĠĠĠĠĠĠĠ Ġval Ġformat Task Ġ= Ġcreate Kotlin Script Format Task ( this , Ġproject Directory Script Files ) ĊĠĠĠĠĠĠĠ Ġadd K tl int Format Task To Project Meta Format Task ( format Task ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠPlugin Holder ( ĊĠĠĠĠĠĠĠ Ġval Ġtarget : ĠProject ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġtarget . plugins . apply ( K tl int Base Plugin :: class . java ). extension ĊĊĠĠĠĠĠĠĠ Ġval Ġmeta K tl int Check Task : ĠTask Provider < Task > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . register Task < Task >( CHECK _ PARENT _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠVER IFICATION _ GROUP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Runs Ġk tl int Ġon Ġall Ġkotlin Ġsources Ġin Ġthis Ġproject ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmeta K tl int Format Task : ĠTask Provider < Task > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . register Task < Task >( FORMAT _ PARENT _ TASK _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠFORM ATT ING _ GROUP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Runs Ġthe Ġk tl int Ġformatter Ġon Ġall Ġkotlin Ġsources Ġin Ġthis Ġproject ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġk tl int Configuration Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ Ġcreate K tl int Configuration ( target , Ġextension ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġk tl int Rule set Configuration Ġ= Ġcreate K tl int Rule set Configuration ( target ) ĊĠĠĠĠĠĠĠ Ġval Ġk tl int Reporter Configuration Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate K tl int Reporter Configuration ( target , Ġextension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ