/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġ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 . test Configuration Ċ Ċ import Ġandroidx . build . get Distribution Directory Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . file . Regular File Property Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . Internal Ċ import Ġorg . gradle . api . tasks . OutputFile Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġorg . gradle . api . tasks . bund ling . Zip Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠModule Info Generator Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġ@ get : OutputFile ĊĠĠĠ Ġabstract Ġval ĠoutputFile : ĠRegular File Property ĊĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġval Ġtest Modules : ĠMutable List < Test Module > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġ@ Input ĊĠĠĠ Ġfun Ġget Serialized (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĠĠĠĠĠĠĠ Ġreturn Ġgson . toJson ( test Modules . map Ġ{ Ġit . name Ġto Ġit Ġ}. toMap ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġwrite Module Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠoutputFile . get (). as File ĊĠĠĠĠĠĠĠ Ġfile . parent File . mkdir s () ĊĠĠĠĠĠĠĠ Ġfile . write Text ( get Serialized ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRegister Ġtwo Ġtasks Ġneed Ġto Ġgenerate Ġinformation Ġfor ĠAndroid Ġtest Ġowners Ġservice . Ċ Ġ* ĠOne Ġtask Ġzip s Ġall Ġthe ĠO WN ERS Ġfiles Ġin Ġframeworks / support , Ġand Ġsecond Ġtask Ġcreates Ġa Ċ Ġ* Ġmodule - info . json Ġthat Ġlinks Ġtest Ġmodules Ġto Ġpaths . Ċ Ġ*/ Ċ internal Ġfun ĠProject . register Owners Service Tasks () Ġ{ ĊĠĠĠ Ġtasks . register (" zip Owners Files ", ĠZip :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . archive FileName . set (" owners . zip ") ĊĠĠĠĠĠĠĠ Ġtask . destination Directory . set ( get Distribution Directory ()) ĊĠĠĠĠĠĠĠ Ġtask . from ( layout . project Directory ) ĊĠĠĠĠĠĠĠ Ġtask . include (" **/ OWN ERS ") ĊĠĠĠĠĠĠĠ Ġtask . include Empty Dirs Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtasks . register (" create Module Info ", ĠModule Info Generator :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠ Ġtask . outputFile . set ( File ( get Distribution Directory (), Ġ" module - info . json ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠTest Module ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġpath : ĠList < String > Ċ )