// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . settings Ċ Ċ import Ġcom . intellij . openapi . util . System Info Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġjava . io . File Ċ Ċ open Ġclass ĠSam Executable Detector Ġ{ ĊĠĠĠ Ġfun Ġdetect (): ĠString ? Ġ= Ġif Ġ( System Info . is Windows ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetect For Windows () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġdetect For Unix () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetect For Windows (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ ĠWINDO WS _ PATHS . forEach Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWINDO WS _ EXECUT ABLE S . forEach Ġ{ Ġexecutable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġfile ( path , Ġexecutable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠWINDO WS _ EXECUT ABLE S . forEach Ġ{ Ġexecutable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcheck In Path ( executable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetect For Unix (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ ĠUNIX _ PATHS . forEach Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġfile ( path , ĠUNIX _ EXECUT ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck In Path ( UNIX _ EXECUT ABLE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck In Path ( executable Name : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Env Var Ġ= ĠSystem . getenv ( PATH _ ENV ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġpath Entries Ġ= ĠString Util . split ( path Env Var , ĠFile . path Separator ) ĊĠĠĠĠĠĠĠ Ġpath Entries . forEach Ġ{ Ġpath Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġfile ( path Entry , Ġexecutable Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( f . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġf . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġfile ( folder : ĠString , Ġname : ĠString ) Ġ= ĠFile ( folder , Ġname ) ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠUNIX _ PATHS Ġ= ĠarrayOf ("/ usr / local / bin ", Ġ"/ usr / bin ") ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUNIX _ EXECUT ABLE Ġ= Ġ" sam " ĊĊĠĠĠĠĠĠĠ Ġval ĠWINDO WS _ PATHS Ġ= ĠarrayOf (" C :\\ Program ĠFiles \\ Amazon \\ AW SS AM CLI \\ bin ", Ġ" C :\\ Program ĠFiles Ġ( x 8 6 )\\ Amazon \\ AW SS AM CLI \\ bin ") ĊĠĠĠĠĠĠĠ Ġval ĠWINDO WS _ EXECUT ABLE S Ġ= ĠarrayOf (" sam . cmd ", Ġ" sam . exe ") ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPATH _ ENV Ġ= Ġ" PATH " ĊĠĠĠ Ġ} Ċ }