package Ġio . em eral dp ay . moon beam . processing Ċ Ċ import Ġio . em eral dp ay . moon beam . state . Agent Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ /** Ċ Ġ* ĠParse Ġagent Ġname Ċ Ġ* Ċ Ġ* ĠExample ĠAgent : Ġparity - pol kad ot / v 0 . 7 . 1 9 - d 1 2 5 7 5 b 9 - x 8 6 _ 6 4 - linux - gnu Ġ( unknown ) Ċ Ġ*/ Ċ class ĠAgent Parser Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Agent Parser :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRE _ FULL Ġ= ĠRegex ("^ (. + ? )/ (. + ?) \\ s (\\ (. + ? \\ )) $ ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRE _ COMMIT _ VERSION Ġ= ĠRegex (" v ?( \\ d + \\. \\ d + \\. \\ d + )( - ([ a - f 0 - 9 ]{ 7 , 8 })) ? -( .+ )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExtract s Ġplatform Ġid Ġfrom Ġfull Ġplatform Ġname . ĠI . e . Ġx 8 6 _ 6 4 - linux - gnu Ġ-> Ġlinux ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġextract Platform ( agent : ĠAgent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplatform Full Ġ= Ġagent . platform Full Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( platform Full . contains (" linux ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . platform Ġ= Ġ" linux " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( platform Full . contains (" darwin ") Ġ|| Ġplatform Full . contains (" osx ") Ġ|| Ġplatform Full . contains (" macos ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . platform Ġ= Ġ" darwin " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( platform Full . contains (" windows ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . platform Ġ= Ġ" windows " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġextract Version ( agent : ĠAgent , Ġversion : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRE _ COMMIT _ VERSION . match Ent ire ( version )?. let Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . version Ġ= Ġ" v ${ m . group Values [ 1 ]}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . commit Ġ= ĠStringUtils . trim To Null ( m . group Values [ 3 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagent . platform Full Ġ= Ġm . group Values [ 4 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse ( full : ĠString ): ĠAgent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠAgent ( full ) ĊĠĠĠĠĠĠĠ ĠRE _ FULL . match Ent ire ( full )?. let Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . software Ġ= Ġm . group Values [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Version ( result , Ġm . group Values [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Platform ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ }