/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . build Ċ Ċ import Ġandroidx . build . upt od ated ness . cache Even If No Outputs Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . Java Exec Ċ import Ġorg . gradle . api . tasks . Stop ExecutionException Ċ import Ġorg . gradle . api . tasks . options . Option Ċ Ċ 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 . 3 9 . 0 ") ĊĠĠĠĠĠĠĠ Ġit . dependencies . add ( dependency ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠDisabled Rules Ġ= ĠlistOf ( ĊĠĠĠ Ġ// Ġdoes Ġnot Ġmatch ĠI J Ġdefault Ġordering ĊĠĠĠ Ġ" import - ordering ", ĊĠĠĠ Ġ// Ġnot Ġuseful Ġfor Ġour Ġprojects ĊĠĠĠ Ġ" final - newline ", Ċ ). join ToString (",") Ċ Ċ fun ĠProject . configure K tl int () Ġ{ ĊĠĠĠ Ġval Ġoutput Dir Ġ= Ġ"${ project . build Dir }/ reports / kt lint /" ĊĠĠĠ Ġval Ġinput Dir Ġ= Ġ" src " ĊĠĠĠ Ġval Ġinclude Files Ġ= Ġ"** /*. kt " ĊĠĠĠ Ġval Ġexclude TestData Files Ġ= Ġ" **/ test - data /**/*. kt " ĊĠĠĠ Ġval Ġexclude External Files Ġ= Ġ" **/ external /**/*. kt " ĊĠĠĠ Ġval Ġinput Files Ġ= Ġproject . file Tree ( ĊĠĠĠĠĠĠĠ Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dir " Ġto Ġinput Dir , Ġ" include " Ġto Ġinclude Files , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude " Ġto ĠlistOf ( exclude TestData Files , Ġexclude External Files ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval ĠoutputFile Ġ= Ġ"${ output Dir } kt lint - check style - report . xml " ĊĊĠĠĠ Ġval Ġlint Provider Ġ= Ġtasks . register (" kt lint ", ĠJava Exec :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . inputs . files ( input Files ) ĊĠĠĠĠĠĠĠ Ġtask . cache Even If No Outputs () ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Check ĠKotlin Ġcode Ġstyle ." ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" Verification " ĊĠĠĠĠĠĠĠ Ġtask . classpath Ġ= Ġget K tl int Configuration () ĊĠĠĠĠĠĠĠ Ġtask . main Ġ= Ġ" com . p interest . kt lint . Main " ĊĠĠĠĠĠĠĠ Ġtask . args Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- android ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- disabled _ rules ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisabled Rules , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- reporter = plain ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- reporter = check style , output =$ outputFile ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ input Dir /$ include Files ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"! $ input Dir /$ exclude TestData Files ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"! $ input Dir /$ exclude External Files " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġafter Evaluate Ġbecause ĠGradle 's Ġdefault Ġ" check " Ġtask Ġdoesn 't Ġexist Ġyet ĊĠĠĠ Ġafter Evaluate Ġ{ ĊĠĠĠĠĠĠĠ ĠaddTo Check Task ( lint Provider ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠaddTo Build On Server ( lint Provider ) ĊĊĠĠĠ Ġtasks . register (" kt lint Format ", ĠJava Exec :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . inputs . files ( input Files ) ĊĠĠĠĠĠĠĠ Ġtask . outputs . file ( outputFile ) ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Fix ĠKotlin Ġcode Ġstyle Ġde viations ." ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" formatting " ĊĠĠĠĠĠĠĠ Ġtask . classpath Ġ= Ġget K tl int Configuration () ĊĠĠĠĠĠĠĠ Ġtask . main Ġ= Ġ" com . p interest . kt lint . Main " ĊĠĠĠĠĠĠĠ Ġtask . args Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- android ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- F ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- disabled _ rules ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisabled Rules , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- reporter = plain ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- reporter = check style , output =$ outputFile ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ input Dir /$ include Files ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"! $ input Dir /$ exclude TestData Files ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"! $ input Dir /$ exclude External Files " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ open Ġclass ĠK tl int Check File Task Ġ: ĠJava Exec () Ġ{ ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" file ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" File Ġto Ġcheck . ĠThis Ġoption Ġcan Ġbe Ġused Ġmultiple Ġtimes : Ġ-- file Ġfile 1 . kt Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- file Ġfile 2 . kt " ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġfiles : ĠList < String > Ġ= Ġempty List () ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" format ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Use Ġ-- format Ġto Ġauto - correct Ġstyle Ġviolations Ġ( if Ġsome Ġerrors Ġcannot Ġbe Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fixed Ġautomatically Ġthey Ġwill Ġbe Ġprinted Ġto Ġstderr )" ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġformat Ġ= Ġfalse Ċ } Ċ Ċ fun ĠProject . configure K tl int Check File () Ġ{ ĊĠĠĠ Ġtasks . register (" kt lint Check File ", ĠK tl int Check File Task :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Check ĠKotlin Ġcode Ġstyle ." ĊĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" Verification " ĊĠĠĠĠĠĠĠ Ġtask . classpath Ġ= Ġget K tl int Configuration () ĊĠĠĠĠĠĠĠ Ġtask . main Ġ= Ġ" com . p interest . kt lint . Main " ĊĊĠĠĠĠĠĠĠ Ġtask . do First Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . files . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠStop ExecutionException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Files Ġ= Ġtask . files . filter Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . endsWith (". kt ") Ġ|| Ġfile . endsWith (". k tx ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( kotlin Files . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠStop ExecutionException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- android ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- disabled _ rules ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisabled Rules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . addAll ( kotlin Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . format ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . add ("- F ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . args Ġ= Ġargs ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ