package Ġorg . li qu ig raph . sentinel . github Ċ Ċ import Ġorg . li qu ig raph . sentinel . effects . Failure Ċ import Ġorg . li qu ig raph . sentinel . effects . Computation Ċ import Ġorg . li qu ig raph . sentinel . effects . Success Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . yaml . s na key aml . Yaml Ċ import Ġorg . yaml . s na key aml . error . YAML Exception Ċ Ċ @ Component Ċ class ĠStored Version Parser ( private Ġval Ġyaml : ĠYaml ) Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( body : ĠString ): ĠComp utation < List < Stored Version >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse Body ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . env . matrix Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġextract Versions ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Body ( body : ĠString ): ĠComp utation < Tr avis Build Definition > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess ( yaml . load As ( body , ĠTravis Build Definition :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠYAML Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFailure ( 1 0 0 0 , Ġe . message Ġ?: Ġ" Invalid ĠYAML ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract Versions ( matrix : ĠList < String >): ĠComp utation < List < Stored Version >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversions : ĠList < Computation < Stored Version >> Ġ= Ġmatrix . map Indexed Ġ{ Ġindex , Ġrow Ġ-> Ġparse Row ( index , Ġrow ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġ( failures , Ġsuc cesses ) Ġ= Ġpartition ( versions ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( failures . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġfailures . join ToString ("\ n ") Ġ{ Ġit . message Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFailure ( failures . first (). code , Ġmessages ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess ( suc cesses . map Ġ{ Ġit . content Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġpartition ( input : ĠList < Computation < T >>) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . fold ( Pair ( emptyList < Failure < T >> (), Ġempty List < Success < T >> ())) Ġ{ Ġ( failures , Ġsuc cesses ), Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> ĠPair ( failures Ġ+ Ġelement , Ġsuc cesses ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> ĠPair ( failures , Ġsuc cesses Ġ+ Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Row ( index : ĠInt , Ġrow : ĠString ): ĠComp utation < Stored Version > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpairs Ġ= Ġrow . split (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex (" ([ a - zA - Z _ ]*) =( .* )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroups Ġ= Ġregex . match Ent ire ( it ) !!. groups ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( groups [ 1 ] !!. value , Ġgroups [ 2 ] !!. value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġne o Version Ġ= Ġpairs . first OrNull Ġ{ Ġit . first Ġ== Ġ" NE O _ VERSION " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠFailure ( 1 0 0 2 , Ġ" Missing Ġ' NE O _ VERSION ' Ġfield Ġat Ġindex Ġ$ index ") ĊĊĠĠĠĠĠĠĠ Ġval Ġwith Docker Ġ= Ġpairs . first OrNull Ġ{ Ġit . first Ġ== Ġ" WITH _ DOCKER " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSuccess ( Stored Version ( neo Version . second , Ġwith Docker ?. second ?. to Boolean () Ġ?: Ġfalse )) ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ @ Target ( Annotation Target . CLASS ) Ċ @ Retention ( Annotation Retention . SOURCE ) Ċ annotation Ġclass ĠNo Arg Constructor Ċ Ċ @ No Arg Constructor Ċ data Ġclass ĠTravis Build Definition ( var Ġenv : ĠTravis Environment ) Ċ Ċ @ No Arg Constructor Ċ data Ġclass ĠTravis Environment ( var Ġmatrix : ĠList < String >)