/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle , ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 . bir bit . artifact finder . external Ċ Ċ import Ġcom . bir bit . artifact finder . Artifact Source Ċ import Ġcom . bir bit . artifact finder . vo . Art ifactory Ċ import Ġjava . io . InputStream Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Configuration Ċ Ċ @ Serializable Ċ data Ġclass ĠExternal Source Spec ( ĊĠĠĠ Ġ// Ġinclude Ġa Ġspec Ġversion Ġso Ġthat Ġwe Ġcan Ġchange Ġit Ġw / o Ġmaking Ġthe Ġc rawler Ġthrow Ġerrors ĊĠĠĠ Ġ@ Serial Name (" version ") ĊĠĠĠ Ġval Ġversion : ĠInt Ġ= ĠL ATE ST _ VERSION , ĊĠĠĠ Ġ// Ġlist Ġof Ġpackages Ġto Ġcrawl ĊĠĠĠ Ġ@ Serial Name (" groups ") ĊĠĠĠ Ġval Ġgroups : ĠList < External Group Spec > Ġ= Ġempty List () Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġas Artifact Sources () Ġ= Ġgroups . flatMap Ġ{ Ġpkg Ġ-> ĊĠĠĠĠĠĠĠ Ġpkg . artifact Ids . map Ġ{ Ġartifact Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArtifact Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġpkg . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Id Ġ= Ġartifact Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġart ifactory Ġ= Ġpkg . art ifactory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠL ATE ST _ VERSION Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġjson Ġ= ĠJson ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Configuration . Stable . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrict Mode Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse ( input : ĠString ): ĠExternal Source Spec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson . parse ( serializer (), Ġinput ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse ( input : ĠInputStream ): ĠExternal Source Spec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparse ( input . reader ( Charsets . UTF _ 8 ). read Text ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġprint ( external Source Spec : ĠExternal Source Spec ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson . stringify ( serializer (), Ġexternal Source Spec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġan Ġexternal Ġsource . Ċ Ġ*/ Ċ @ Serializable Ċ data Ġclass ĠExternal Group Spec ( ĊĠĠĠ Ġ@ Serial Name (" groupId ") ĊĠĠĠ Ġval ĠgroupId : ĠString , ĊĠĠĠ Ġ@ Serial Name (" artifact Ids ") ĊĠĠĠ Ġval Ġartifact Ids : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠ Ġ@ Serial Name (" art ifactory ") ĊĠĠĠ Ġval Ġart ifactory : ĠArt ifactory Ġ= ĠArt ifactory . MA VEN Ċ ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( artifact Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Artifacts Ġfor Ġa Ġpackage Ġcannot Ġbe Ġempty " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ