package Ġdev . v ish na . pat rol Ċ Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ type alias ĠCommand Args Ġ= ĠArray < String > Ċ Ċ type alias ĠPat rol Inspection Ġ= Ġ(( pat rol : ĠPat rol Command , Ġwatch Point : ĠWatch Point , Ġdry Run : ĠBoolean , Ġrun Once : ĠBoolean ) Ġ-> ĠUnit ) Ċ Ċ type alias ĠBootstrap Pat rol Ġ= Ġ(( pat rol File : ĠFile ) Ġ-> ĠBoolean ) Ċ Ċ /** Ċ Ġ* ĠPat rol Ġis Ġa Ġsimp list ic Ġshell Ġfor Ġany Ġroutine Ġthat Ġwants Ġto Ġbe Ġsubscribed Ġto Ġchanges Ċ Ġ* Ġin Ġfile Ġsystem Ġas Ġdefined Ġin Ġthe Ġaccompanying Ġpat rol Ġfile . Ċ Ġ*/ Ċ data Ġclass ĠPat rol ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġprovide Ġbootstrap Ġstrategy Ġfor Ġpat rol 's Ġconfiguration Ġfile , Ġthat Ġis Ġcreate ĊĠĠĠĠ Ġ* Ġthe Ġconfiguration Ġfile Ġfor Ġthis Ġpat rol Ġif Ġit Ġdoesn 't Ġexist Ġyet ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġbootstrap : ĠBootstrap Pat rol ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWh enever Ġpat rol Ġdetected Ġchanges Ġin Ġone Ġof Ġthe ĠWatch Points , Ġthis Ġis Ġa Ġcallback Ġthat ĊĠĠĠĠ Ġ* Ġwill Ġget Ġtriggered . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġon Inspection : ĠPat rol Inspection , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġname Ġof Ġthe ĠCLI Ġcommand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġname : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDescription Ġthat Ġwill Ġbe Ġshown Ġin ĠCLI Ġif Ġ-- help Ġflag Ġis Ġpassed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhelp : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠName Ġof Ġthe Ġpat rol Ġfile Ġthat Ġwill Ġbe Ġused Ġto Ġinst igate Ġall Ġthe ĠWatch Points . ĠDefaults Ġto ĊĠĠĠĠ Ġ* Ġname Ġ+ Ġ. yaml Ġextension ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġpat rol FileName : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġor Ġnot Ġwe Ġshould Ġrun Ġin Ġdebug Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdebug : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġ@ Pat rol Dsl ĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbootstrap : ĠBootstrap Pat rol ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġdebug : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Inspection _: ĠPat rol Inspection ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġname _ Ġ: ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġhelp _ Ġ: ĠString ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġpat rol FileName _: ĠString ĊĊĠĠĠĠĠĠĠ Ġfun Ġbootstrap ( bootstrap : ĠBootstrap Pat rol ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . bootstrap Ġ= Ġbootstrap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Inspection ( on Inspection : ĠPat rol Inspection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Inspection _ Ġ= Ġon Inspection ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġname ( init : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname _ Ġ= Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhelp ( init : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelp _ Ġ= Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġpat rol FileName ( init : Ġ() Ġ-> ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpat rol FileName _ Ġ= Ġinit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ: ĠPat rol Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: on Inspection _. isInitialized ) Ġthrow ĠIllegalArgumentException (" on Inspection Ġblock Ġmissing ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: name _. isInitialized ) Ġthrow ĠIllegalArgumentException (" name Ġnot Ġset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: help _. isInitialized ) Ġthrow ĠIllegalArgumentException (" help Ġnot Ġset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: pat rol FileName _. isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpat rol FileName _ Ġ= Ġ"$ name _. yaml " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPat rol ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname _, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Ġ= Ġhelp _, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Inspection Ġ= Ġon Inspection _, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpat rol FileName Ġ= Ġpat rol FileName _, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbootstrap Ġ= Ġbootstrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Ġ= Ġdebug ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Dsl Marker Ċ annotation Ġclass ĠPat rol Dsl Ċ fun ĠCommand Args . pat rol ( block : ĠPat rol . Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġpat rol Ġ= ĠPat rol . Builder (). apply ( block ). build () ĊĊĠĠĠ ĠPat rol Command ( pat rol ). main ( this ) Ċ }