/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . google . devtools . k sp Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . tasks . Java Exec Ċ Ċ // ĠThis Ġfile Ġis Ġmostly Ġport ed Ġfrom ĠAndroid X Ġwith Ġminor Ġmodifications . Ċ // Ġhttps :// cs . android . com / android x / platform / frameworks / support / +/ android x - main : build Src / src / main / kotlin / android x / build / K tl int . kt Ċ Ċ /** Ċ Ġ* ĠAdds Ġa Ġk tl int Apply To Ide a Ġtask Ġthat Ġupdates Ġthe Ġlocal Ġ. idea Ġfiles Ġto Ġmatch Ġthe Ġk tl int Ġstyle . Ċ Ġ*/ Ċ fun ĠProject . configure K tl int Apply To Ide a () Ġ{ ĊĠĠĠ Ġif Ġ( this . root Project Ġ!== Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Can Ġonly Ġuse Ġroot Ġproject Ġfor Ġapply To Ide a Ġtask ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġtasks . register (" kt lint Apply To Ide a ", ĠJava Exec :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Apply Ġk tl int Ġstyle Ġto Ġidea " ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" Tool ing " ĊĠĠĠĠĠĠĠ Ġtask . classpath Ġ= Ġget K tl int Configuration () ĊĠĠĠĠĠĠĠ Ġtask . main Ġ= Ġ" com . p interest . kt lint . Main " ĊĠĠĠĠĠĠĠ Ġtask . args Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" apply To IDE A Project ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- y " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠConfig ures Ġa Ġ" kt lint " Ġtask Ġfor Ġthe Ġproject Ġto Ġcheck Ġformatting Ġand Ġ` kt lint Format ` Ġtask Ċ Ġ* Ġto Ġfix Ġformatting . Ċ Ġ*/ Ċ fun ĠProject . configure K tl int () Ġ{ ĊĠĠĠ Ġval Ġlint Provider Ġ= Ġtasks . register (" kt lint ", ĠJava Exec :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . configure Common K tl int Params ( this @ configure K tl int ) ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Check ĠKotlin Ġcode Ġstyle ." ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" Verification " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġafter Evaluate Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġtask Ġis Ġnot Ġavailable Ġyet , Ġwhich Ġis Ġwhy Ġwe Ġuse Ġafter Evaluate ĊĠĠĠĠĠĠĠ Ġproject . tasks . named (" check "). configure Ġ{ Ġcheck Task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Task . depends On ( lint Provider ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks . register (" kt lint Format ", ĠJava Exec :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . configure Common K tl int Params ( this @ configure K tl int ) ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Fix ĠKotlin Ġcode Ġstyle Ġde viations ." ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" formatting " ĊĠĠĠĠĠĠĠ Ġtask . args Ġ= ĠlistOf ("- F ") Ġ+ Ġtask . args !! ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠConfig ures Ġcommon Ġk tl int Ġparameters Ġfor Ġk tl int Ġtasks Ċ Ġ*/ Ċ private Ġfun ĠJava Exec . configure Common K tl int Params ( ĊĠĠĠ Ġproject : ĠProject Ċ ) Ġ{ ĊĠĠĠ Ġval Ġk tl int Input Files Ġ= Ġproject . file Tree ( project . project Dir ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . include (" ** /*. kt ") ĊĠĠĠĠĠĠĠ Ġit . include (" ** /*. k ts ") ĊĠĠĠĠĠĠĠ Ġit . exclude (" **/ testData /** ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠoutputFile Ġ= Ġproject . build Dir . resolve (" reports / kt lint / kt lint - check style - report . xml ") ĊĠĠĠ Ġinputs . files ( kt lint Input Files ) ĊĠĠĠ Ġclasspath Ġ= Ġproject . get K tl int Configuration () ĊĠĠĠ Ġmain Ġ= Ġ" com . p interest . kt lint . Main " ĊĠĠĠ Ġoutputs . file ( outputFile ) ĊĠĠĠ Ġargs Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ"-- reporter = plain ", ĊĠĠĠĠĠĠĠ Ġ"-- reporter = check style , output =$ outputFile ", ĊĠĠĠ Ġ) Ġ+ Ġk tl int Input Files . files . map Ġ{ Ġit . absolute Path Ġ} Ċ } Ċ Ċ private Ġfun ĠProject . get K tl int Configuration (): ĠConfiguration Ġ{ ĊĠĠĠ Ġreturn Ġconfigurations . find ByName (" kt lint ") Ġ?: Ġconfigurations . create (" kt lint ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdependency Ġ= Ġdependencies . create (" com . p interest : kt lint : 0 . 4 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġit . dependencies . add ( dependency ) ĊĠĠĠ Ġ} Ċ } Ċ