/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠInter shop ĠCom munications ĠAG . Ċ Ġ* Ċ Ġ* Ġ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 . inter shop . gradle . ic m . utils Ċ Ċ import Ġcom . inter shop . gradle . ic m . extension . File Package Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . artifacts . External Module Dependency Ċ import Ġorg . gradle . api . file . Copy Spec Ċ import Ġorg . gradle . api . file . Duplicates Strategy Ċ import Ġorg . gradle . api . internal . artifacts . ivy service . Default Len ient Configuration Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠThis Ġobject Ġprovides Ġmethods Ġto Ġhandle Ċ Ġ* Ġdependencies Ġfor Ġpackages . Ċ Ġ*/ Ċ object ĠPackage Util Ġ{ ĊĊĠĠĠ Ġfun Ġdownload Package ( project : ĠProject , Ġdependency : ĠString , Ġclassifier : ĠString ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdependency Handler Ġ= Ġproject . dependencies ĊĠĠĠĠĠĠĠ Ġval Ġdep Ġ= Ġdependency Handler . create ( dependency ) Ġas ĠExternal Module Dependency ĊĠĠĠĠĠĠĠ Ġdep . artifact Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġ= Ġdep . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . classifier Ġ= Ġclassifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . extension Ġ= Ġ" zip " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= Ġ" zip " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġproject . configurations . det ached Configuration ( dep ) ĊĠĠĠĠĠĠĠ Ġconfiguration . setVisible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Trans itive ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ("$ classifier Ġfor Ġpackage Ġdownload : Ġ$ dependency ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Dependencies Ġ{ Ġds Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . add ( dep ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġconfiguration . resolve () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfiles . first () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( an fe : ĠDefault Len ient Configuration . Artifact Resolve Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . warn (" No Ġpackage Ġ'{}' Ġis Ġavailable Ġfor Ġ{} !", Ġclassifier , Ġdependency ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Spec Config ( cs : ĠCopy Spec , Ġpkg : ĠFile Package ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( pkg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude s . get (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcs . exclude ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincludes . get (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcs . include ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Path . isPresent Ġ&& Ġ! Ġtarget Path . get (). isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcs . into ( target Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( duplicate Strategy . isPresent Ġ&& Ġduplicate Strategy . get () Ġ!= ĠD uplicates Strategy . IN HER IT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcs . duplicates Strategy Ġ= Ġduplicate Strategy . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Package To CS ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdependency : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassifier : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Spec : ĠCopy Spec , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Package : ĠFile Package , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude s : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Base : ĠFile ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġfile Base Ġ?: Ġdownload Package ( project , Ġdependency , Ġclassifier ) ĊĊĠĠĠĠĠĠĠ Ġif ( file Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpkg CS Ġ= Ġproject . copy Spec () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpkg CS . from ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpkg CS . from ( project . zip Tree ( file )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Spec Config ( pkg CS , Ġfile Package ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( exclude s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpkg CS . exclude (* exclude s . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Spec . with ( pkg CS ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . debug (" No Ġpackage Ġ'{}' Ġavailable Ġfor Ġdependency Ġ{}", Ġclassifier , Ġdependency ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ