package Ġfast . dsl Ċ Ċ import Ġfast . api . Deploy Fast App Ċ import Ġfast . api . Deploy Fast Extension Ċ import Ġfast . api . Extension Config Ċ import Ġfast . api . Task Set Ċ import Ġfast . runtime . All Sessions Runtime Context Ċ Ċ /** Ċ Ġ* ĠTODO : Ġrename Ġext Ġinto Ġi . e . Ġextensions , Ċ Ġ*/ Ċ open Ġclass ĠDeploy Fast DSL < CONF Ġ: ĠExtension Config , ĠEXT Ġ: ĠDeploy Fast Extension < EXT , ĠCONF >>( ĊĠ Ġval Ġext : ĠEXT Ċ ) Ġ{ ĊĠ Ġinternal Ġvar Ġinfo : ĠInfo DSL ? Ġ= Ġnull ĊĠ Ġinternal Ġvar Ġssh : ĠSsh DSL ? Ġ= Ġnull ĊĊĠ Ġval Ġdefault Tasks : ĠTask Set Ġ= ĠTask Set ( ĊĠĠĠ Ġname Ġ= Ġext . name , ĊĠĠĠ Ġdesc Ġ= Ġ" Tasks Ġof Ġextension Ġ${ ext . name }" ĊĠ Ġ) ĊĊĠ Ġval Ġglobal Tasks : ĠTask Set Ġ= ĠTask Set ("${ ext . name }. global ", ĊĠĠĠ Ġ" Default ĠGlobal ĠTasks Ġfor ĠExtension Ġ$ ext " ĊĠ Ġ) ĊĊĠ Ġval Ġdefined Tasks : ĠTask Set Ġ= ĠTask Set ("${ ext . name }. tasks ", ĊĠĠĠ Ġ" Tasks Ġto ĠCall Ġfor ĠExtension Ġ$ ext " ĊĠ Ġ) ĊĊĠ Ġfun Ġauto Install (): ĠUnit Ġ= ĠTODO () ĊĊĠ Ġfun Ġinfo ( block : ĠInfo DSL . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġinfo Ġ= ĠInfo DSL (). apply ( block ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġbefore Global Tasks : Ġ( All Sessions Runtime Context . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġafter Global Tasks : Ġ( All Sessions Runtime Context . () Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠ Ġfun Ġsetup Ssh ( block : ĠSsh DSL . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġssh Ġ= ĠSsh DSL (). apply ( block ) ĊĠ Ġ} ĊĊĠ Ġfun Ġglobal Tasks Before Play ( block : ĠTasks DSL < EXT , ĠCONF >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġglobal Tasks . addAll ( Tasks DSL < EXT , ĠCONF >(). apply ( block ). task Set ) ĊĠ Ġ} ĊĊĠ Ġfun Ġdefine Tasks ( block : ĠTasks DSL < EXT , ĠCONF >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġdefined Tasks . addAll ( Tasks DSL < EXT , ĠCONF >(). apply ( block ). task Set ) ĊĠ Ġ} ĊĊĊĠ Ġ/* fun Ġbefore Global Tasks ( block : ĠAll Sessions Runtime Context . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbefore Global Tasks Ġ= Ġblock ĊĠ Ġ} ĊĊĠ Ġfun Ġafter Global Tasks ( block : ĠAll Sessions Runtime Context . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġafter Global Tasks Ġ= Ġblock ĊĠ Ġ}*/ ĊĊĠ Ġfun Ġplay ( block : ĠTasks DSL < EXT , ĠCONF >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġdefault Tasks . addAll ( Tasks DSL < EXT , ĠCONF >(). apply ( block ). task Set ) ĊĠ Ġ} Ċ Ċ // Ġ Ġfun Ġbefore Play ( block : ĠTasks DSL . () Ġ-> ĠUnit ) Ġ{ Ċ // ĠĠĠ Ġtasks . before . addAll ( Tasks DSL (). apply ( block ). task Set ) Ċ // Ġ Ġ} Ċ // Ċ // Ġ Ġfun Ġafter Play ( block : ĠTasks DSL . () Ġ-> ĠUnit ) Ġ{ Ċ // ĠĠĠ Ġtasks . after . addAll ( Tasks DSL (). apply ( block ). task Set ) Ċ // Ġ Ġ} ĊĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġ< CONF Ġ: ĠExtension Config , ĠEXT Ġ: ĠDeploy Fast Extension < EXT , ĠCONF >> Ġcreate Ext Dsl ( ĊĠĠĠĠĠ Ġext : ĠEXT , Ġblock : ĠDeploy Fast DSL < CONF , ĠEXT >. () Ġ-> ĠUnit ĊĊĠĠĠ Ġ): ĠDeploy Fast DSL < CONF , ĠEXT > Ġ{ ĊĠĠĠĠĠ Ġval Ġdeploy Fast DSL Ġ= ĠDeploy Fast DSL ( ext ) ĊĊĠĠĠĠĠ Ġdeploy Fast DSL . apply ( block ) ĊĊĠĠĠĠĠ Ġreturn Ġdeploy Fast DSL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< APP Ġ: ĠDeploy Fast App < APP >> Ġcreate App Dsl ( ĊĠĠĠĠĠ Ġapp : ĠAPP , Ġblock : ĠDeploy Fast App DSL < APP >. () Ġ-> ĠUnit ĊĊĠĠĠ Ġ): ĠDeploy Fast App DSL < APP > Ġ{ ĊĠĠĠĠĠ Ġval Ġdeploy Fast DSL Ġ= ĠDeploy Fast App DSL ( app ) ĊĊĠĠĠĠĠ Ġdeploy Fast DSL . apply ( block ) ĊĊĠĠĠĠĠ Ġreturn Ġdeploy Fast DSL ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }