package Ġcom . gmail . blue box ware . lib gdx plugin . utils Ċ Ċ import Ġcom . gmail . blue box ware . lib gdx plugin . components . Version Manager Ċ import Ġcom . gmail . blue box ware . lib gdx plugin . message Ċ import Ġcom . gmail . blue box ware . lib gdx plugin . versions . Libraries Ċ import Ġcom . gmail . blue box ware . lib gdx plugin . versions . libs . Lib G DX Library Ċ import Ġcom . intellij . code Inspection . Problems Holder Ċ import Ġcom . intellij . openapi . roots . Order Root Type Ċ import Ġcom . intellij . openapi . roots . impl . libraries . Library Impl Ċ import Ġcom . intellij . openapi . roots . libraries . Library Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . jetbrains . kotlin . config . Maven Comparable Version Ċ import Ġorg . jetbrains . kotlin . psi . Kt String Template Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value ArgumentList Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . plain Content Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . Gr Assignment Expression Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . Gr Command ArgumentList Ċ import Ġorg . jetbrains . plugins . groovy . lang . psi . api . statements . expressions . literals . Gr Literal ĊĊ Ċ /* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠBlue ĠBox ĠW are Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ internal Ġfun Ġcheck Version And Report ( holder : ĠPro blems Holder , Ġelement : ĠPsi Element , Ġlib : ĠLibraries , Ġversion : ĠMaven Comparable Version ?) Ġ{ ĊĊĠ Ġval Ġversion Manager Ġ= Ġholder . project . getComponent ( Version Manager :: class . java ) Ġ?: Ġreturn ĊĊĠ Ġval Ġlatest Version Ġ= Ġversion Manager . get Latest Version ( lib ) Ġ?: Ġreturn ĊĠ Ġval Ġused Version Ġ= Ġversion Ġ?: Ġrun Ġ{ ĊĠĠĠ Ġif Ġ( lib . library Ġis ĠLib G DX Library ) Ġ{ ĊĠĠĠĠĠ Ġversion Manager . get Used Version ( Libraries . LIB G DX ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġversion Manager . get Used Version ( lib ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ġ?: Ġreturn ĊĊĠ Ġif Ġ( used Version Ġ< Ġlatest Version ) Ġ{ ĊĊĠĠĠ Ġholder . register Problem ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" out dated . version . inspection . msg ", Ġlib . library . name , Ġlatest Version ) ĊĠĠĠ Ġ) ĊĊĠ Ġ} Ċ } ĊĊ Ċ internal Ġfun Ġget Library Info From Ide a Library ( library : ĠLibrary ): ĠPair < Libraries , ĠMaven Comparable Version >? Ġ{ ĊĊĠ Ġif Ġ(( library Ġas ? ĠLibrary Impl )?. is Disposed Ġ== Ġtrue ) Ġ{ ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġfor Ġ( lib G DX Lib Ġin ĠLibraries . values ()) Ġ{ ĊĠĠĠ Ġfor Ġ( url Ġin Ġlibrary . get Urls ( Order Root Type . CLASSES )) Ġ{ ĊĠĠĠĠĠ Ġlib G DX Lib . getVersion From Ide a Library ( library )?. let Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( lib G DX Lib , Ġversion ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġreturn Ġnull Ċ Ċ } Ċ Ċ internal Ġfun Ġget Library From Ext Key ( ext Key : ĠString ): ĠLibraries ? Ġ= ĊĠĠĠĠĠĠĠ ĠLibraries . values (). find Ġ{ Ġit . library . ext Keys ?. contains ( ext Key ) Ġ== Ġtrue Ġ} Ċ Ċ internal Ġfun Ġget Library From Gro ovy Literal ( gr Literal : ĠGr Literal ): ĠLibraries ? Ġ= ĊĠĠĠĠĠĠĠ Ġgr Literal . asString ()?. let (:: get Library From Maven Coord String ) Ċ Ċ internal Ġfun Ġget Library Info From Gro ovy Literal ( gr Literal : ĠGr Literal ): ĠPair < Libraries , ĠMaven Comparable Version ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Library From Gro ovy Literal ( gr Literal )?. let Ġ{ Ġlib Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġgr Literal . asString ()?. let Ġ{ Ġstring Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlib . getVersion From Maven Coord String ( string ). let Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Ġto Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġget Library From Gro ovy ArgumentList ( groovy Command ArgumentList : ĠGr Command ArgumentList ): ĠLibraries ? Ġ{ ĊĊĠ Ġval Ġgroup Argument Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġ( groovy Command ArgumentList . getName d Argument (" group ") Ġas ? ĠGr Literal )?. asString ()?. let (:: trim Quotes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĠ Ġval Ġname Argument Ġ= ĊĠĠĠĠĠĠĠĠĠ Ġ( groovy Command ArgumentList . getName d Argument (" name ") Ġas ? ĠGr Literal )?. asString ()?. let (:: trim Quotes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĠ Ġreturn ĠLibraries . values (). find Ġ{ ĊĠĠĠ Ġit . library . groupId Ġ== Ġgroup Argument Ġ&& Ġit . library . artifactId Ġ== Ġname Argument ĊĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġfun Ġget Library From Kotlin ArgumentList ( kt Value ArgumentList : ĠK t Value ArgumentList ): ĠLibraries ? Ġ{ ĊĊĠ Ġval Ġgroup Argument Ġ= Ġkt Value ArgumentList . getName d Argument Plain Content (" group ") Ġ?: Ġreturn Ġnull ĊĠ Ġval Ġname Argument Ġ= Ġkt Value ArgumentList . getName d Argument Plain Content (" name ") Ġ?: Ġreturn Ġnull ĊĊĠ Ġreturn ĠLibraries . values (). find Ġ{ ĊĠĠĠ Ġit . library . groupId Ġ== Ġgroup Argument Ġ&& Ġit . library . artifactId Ġ== Ġname Argument ĊĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġfun Ġget Library Info From Gro ovy ArgumentList ( groovy Command ArgumentList : ĠGr Command ArgumentList ): ĠPair < Libraries , ĠMaven Comparable Version ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Library From Gro ovy ArgumentList ( groovy Command ArgumentList )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġto Ġget Version From Gro ovy ArgumentList ( groovy Command ArgumentList ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġget Library Info From Kotlin ArgumentList ( kt Value ArgumentList : ĠK t Value ArgumentList ): ĠPair < Libraries , ĠMaven Comparable Version ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Library From Kotlin ArgumentList ( kt Value ArgumentList )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit Ġto Ġget Version From Kotlin ArgumentList ( kt Value ArgumentList ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġget Library Info From Gro ovy Assignment ( gr Assignment Expression : ĠGr Assignment Expression ): ĠPair < Libraries , ĠMaven Comparable Version ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġgr Assignment Expression . l Value . text ?. let Ġ{ Ġext Key Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġget Library From Ext Key ( ext Key )?. let Ġ{ Ġlib Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Version From Gro ovy Assignment ( gr Assignment Expression ). let Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Ġto Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġget Library From Kotlin String ( kt String Template Expression : ĠK t String Template Expression ): ĠLibraries ? Ġ= ĊĠĠĠĠĠĠĠ Ġget Library From Maven Coord String ( kt String Template Expression . plain Content ) ĊĊ Ċ internal Ġfun Ġget Library Info From Kotlin String ( kt String Template Expression : ĠK t String Template Expression ): ĠPair < Libraries , ĠMaven Comparable Version ?> ? Ġ= ĊĠĠĠĠĠĠĠ Ġkt String Template Expression . plain Content . let Ġ{ Ġstr Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġget Library From Kotlin String ( kt String Template Expression )?. let Ġ{ Ġlib Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlib . getVersion From Maven Coord String ( str ). let Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Ġto Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠLibraries . getVersion From Maven Coord String ( str : ĠString ): ĠMaven Comparable Version ? Ġ= ĊĠĠĠĠĠĠĠ ĠRegex (""" ${ library . groupId }:${ library . artifactId }: ([^ $: @" '] + \. [^ $: @" '] + ). * "" "). let Ġ{ Ġregex Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġregex . match Ent ire ( str )?. let Ġ{ Ġmatch Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Result . group Values . get OrNull ( 1 )?. to Version () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ internal Ġfun ĠLibraries . getVersion From Ide a Library ( idea Library : ĠLibrary ): ĠMaven Comparable Version ? Ġ{ ĊĊĠ Ġval Ġregex Ġ= ĠRegex (""" [/ \\ ] ${ library . groupId }[ / \\ ] ${ library . artifactId }[ / \\ ]( [^ / ]+ \. [^ / ]+)/ """) ĊĊĠ Ġfor Ġ( url Ġin Ġidea Library . get Urls ( Order Root Type . CLASSES )) Ġ{ ĊĠĠĠ Ġregex . find ( url )?. let Ġ{ Ġmatch Result Ġ-> ĊĠĠĠĠĠ Ġmatch Result . group Values . get OrNull ( 1 )?. let Ġ{ Ġversion String Ġ-> ĊĠĠĠĠĠĠĠ Ġreturn Ġversion String . to Version () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġreturn Ġnull Ċ Ċ } Ċ Ċ internal Ġfun Ġget Version From Gro ovy Assignment ( gr Assignment Expression : ĠGr Assignment Expression ): ĠMaven Comparable Version ? Ġ= ĊĠĠĠĠĠĠĠ Ġ( gr Assignment Expression . r Value Ġas ? ĠGr Literal )?. asString ()?. let (:: trim Quotes )?. let Ġ{ ĠMaven Comparable Version ( it ) Ġ} Ċ Ċ private Ġfun Ġget Library From Maven Coord String ( str : ĠString ): ĠLibraries ? Ġ= ĊĠĠĠĠĠĠĠ ĠLibraries . values (). find Ġ{ Ġlib Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠRegex (""" ${ lib . library . groupId }:${ lib . library . artifactId } ($ |: .* ) "" "). matches ( str ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ private Ġfun Ġget Version From Gro ovy ArgumentList ( groovy Command ArgumentList : ĠGr Command ArgumentList ): ĠMaven Comparable Version ? Ġ= ĊĠĠĠĠĠĠĠ Ġ( groovy Command ArgumentList . getName d Argument (" version ") Ġas ? ĠGr Literal )?. asString ()?. to Version () Ċ Ċ private Ġfun Ġget Version From Kotlin ArgumentList ( kt Value ArgumentList : ĠK t Value ArgumentList ): ĠMaven Comparable Version ? Ġ= ĊĠĠĠĠĠĠĠ Ġkt Value ArgumentList . getName d Argument Plain Content (" version ") ?. let (:: Maven Comparable Version ) Ċ Ċ private Ġfun ĠK t Value ArgumentList . getName d Argument Plain Content ( name : ĠString ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġ( getName d Argument ( name ) Ġas ? ĠK t String Template Expression )?. plain Content Ċ Ċ private Ġfun ĠString . to Version () Ġ= ĊĠĠĠĠĠĠĠ Ġtake If Ġ{ Ġcontains ('.') Ġ&& Ġ! any Ġ{ Ġchar Ġ-> Ġchar Ġin ĠlistOf ('$ ', Ġ'" ', Ġ'\' ') Ġ} Ġ} ?. let (:: Maven Comparable Version )