package Ġio . zero 8 8 . gradle . q we . docker Ċ Ċ import Ġcom . bm us ch ko . gradle . docker . Docker Remote Api Plugin Ċ import Ġcom . bm us ch ko . gradle . docker . tasks . image . Docker Build Image Ċ import Ġcom . bm us ch ko . gradle . docker . tasks . image . Dockerfile Ċ import Ġio . zero 8 8 . gradle . OSS Extension Ċ import Ġio . zero 8 8 . gradle . helper . prop Ċ import Ġio . zero 8 8 . gradle . q we . Q WE Decorator Plugin Ċ import Ġio . zero 8 8 . gradle . q we . Q WE Extension Ċ import Ġio . zero 8 8 . gradle . q we . app . Q WE App Extension Ċ import Ġio . zero 8 8 . gradle . q we . app . Q WE App Plugin Ċ import Ġio . zero 8 8 . gradle . q we . docker . task . Docker Multiple Regist ries Push Task Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Extension Aware Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . kotlin . dsl .* Ċ import Ġorg . gradle . language . base . plugins . Lifecycle Base Plugin Ċ Ċ @ Suppress (" Un stable Api Usage ") Ġclass ĠQ W ED ocker Plugin Ġ: ĠQ WE Decorator Plugin < Q W ED ocker Extension > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGROUP Ġ= Ġ" Q WE ĠDocker " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ DOCKER _ REGISTRY Ġ= Ġ" docker Regist ries " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ DOCKER _ TAGS Ġ= Ġ" docker Tags " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ DOCKER _ LABEL S Ġ= Ġ" docker Labels " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply External Plugins ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . plugins . apply ( Docker Remote Api Plugin :: class . java ) ĊĠĠĠĠĠĠĠ Ġproject . plugins . apply ( Q WE App Plugin :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure Extension ( project : ĠProject , Ġoss Ext : ĠO SS Extension , Ġq we Ext : ĠQ WE Extension ): ĠQ W ED ocker Extension Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġ( q we Ext Ġas ĠExtension Aware ). extensions . create < Q W ED ocker Extension >( Q W ED ocker Extension . NAME ) ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġoss Ext . base Name . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( oss Ext . zero 8 8 . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext . maintainer . set ("${ OSS Extension . DEV _ ID } Ġ< ${ OSS Extension . DEV _ EMAIL }> ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregistry Params Ġ= Ġprop ( project , ĠARG _ DOCKER _ REGISTRY , Ġtrue )?. split (",") ?. map Ġ{ Ġ"${ it }/${ name }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Params Ġ= Ġprop ( project , ĠARG _ DOCKER _ TAGS )?. split (",") ?. filter Ġ{ Ġs Ġ-> Ġs . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabel Params Ġ= Ġprop ( project , ĠARG _ DOCKER _ LABEL S , Ġtrue )?. split (",") ?. filter Ġ{ Ġs Ġ-> Ġs . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdl Ġ= ĠlistOf (" version =${ project . version }", Ġ" maintainer =${ ext . maintainer . get () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlabels Ġ= Ġdl Ġ+ Ġ( if Ġ( label Params . isNull OrEmpty ()) ĠlistOf () Ġelse Ġlabel Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext . docker Image . image Regist ries . addAll ( registry Params Ġ?: ĠlistOf ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext . docker Image . tags . addAll ( if Ġ( tag Params . isNull OrEmpty ()) ĠlistOf ( project . version . toString ()) Ġelse Ġtag Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext . docker Image . labels . put All ( labels . map Ġ{ Ġs Ġ-> Ġs . split (" =") Ġ}. associate Ġ{ Ġit [ 0 ] Ġto Ġit [ 1 ] Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister And Configure Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġoss Ext : ĠO SS Extension , ĊĠĠĠĠĠĠĠ Ġq we Ext : ĠQ WE Extension , ĊĠĠĠĠĠĠĠ Ġdecorator Ext : ĠQ W ED ocker Extension ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Ext Ġ= Ġ( q we Ext Ġas ĠExtension Aware ). extensions . getBy Type < Q WE App Extension >() ĊĠĠĠĠĠĠĠ Ġproject . tasks Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( decorator Ext . enabled . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocker File Provider Ġ= Ġregister Create Dockerfile Task ( oss Ext . base Name , Ġapp Ext , Ġdecorator Ext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocker Build Task Ġ= Ġregister Docker Build ( oss Ext . base Name , Ġdecorator Ext , Ġdocker File Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnamed ( Lifecycle Base Plugin . BUILD _ TASK _ NAME ). get (). depends On ( docker Build Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Print Dockerfile ( decorator Ext , Ġdocker File Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Docker Push Task ( decorator Ext , Ġdocker Build Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTask Container Scope . register Create Dockerfile Task ( ĊĠĠĠĠĠĠĠ Ġbase Name : ĠProperty < String >, ĊĠĠĠĠĠĠĠ Ġapp Ext : ĠQ WE App Extension , ĊĠĠĠĠĠĠĠ Ġdocker Ext : ĠQ W ED ocker Extension ĊĠĠĠ Ġ): ĠTask Provider < Dockerfile > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġregister < Dockerfile >(" create Dockerfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Create ĠDockerfile " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġonly If Ġ{ Ġdocker Ext . enabled . get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf qn Ġ= Ġbase Name . get () Ġ+ Ġ"-" Ġ+ Ġproject . version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf Ġ= Ġdocker Ext . dockerfile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest File . set ( docker Ext . output Directory . file ( base Name )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( df . image . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworking Dir ( app Ext . working Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd File (" distributions /${ fq n }. tar ", Ġ"./ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Command (" cp Ġ- rf Ġ$ fq n /* Ġ./ Ġ&& Ġrm Ġ- rf Ġ$ fq n Ġ&& Ġmkdir Ġ- p Ġ${ app Ext . data Dir . get () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Command ( df . user Group Cmd . orElse ( df . generate User Group Cmd ( app Ext . data Dir . get ()))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( df . other Cmd . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Command ( df . other Cmd ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume ( app Ext . data Dir . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser ( df . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Point (" java ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Command ("- jar ", Ġ"${ fq n }. jar ", Ġ"- conf ", Ġ" conf /${ app Ext . configFile . get () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpose Port ( df . ports ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel ( docker Ext . docker Image . labels ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTask Container Scope . register Print Dockerfile ( ĊĠĠĠĠĠĠĠ Ġdocker Ext : ĠQ W ED ocker Extension , ĊĠĠĠĠĠĠĠ Ġprovider : ĠTask Provider < Dockerfile > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister < Default Task >(" print Dockerfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Show ĠDockerfile " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġonly If Ġ{ Ġdocker Ext . enabled . get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstructions Ġ= Ġprovider . get (). instructions . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( instructions . join ToString ( System . line Separator ()) Ġ{ Ġit . text Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTask Container Scope . register Docker Build ( ĊĠĠĠĠĠĠĠ Ġbase Name : ĠProperty < String >, ĊĠĠĠĠĠĠĠ Ġq we Docker Ext : ĠQ W ED ocker Extension , ĊĠĠĠĠĠĠĠ Ġdocker File Provider : ĠTask Provider < Dockerfile > ĊĠĠĠ Ġ): ĠTask Provider < Docker Build Image > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġregister < Docker Build Image >(" build Docker ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Build ĠDocker Ġimage " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġonly If Ġ{ Ġq we Docker Ext . enabled . get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( project . tasks . get ByName ( Lifecycle Base Plugin . AS SE MB LE _ TASK _ NAME ), Ġdocker File Provider . get ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Dir . set ( project . layout . build Directory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocker File . set ( q we Docker Ext . output Directory . file ( base Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages . value ( q we Docker Ext . docker Image . to FQ N Images ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTask Container Scope . register Docker Push Task ( ĊĠĠĠĠĠĠĠ Ġdocker Ext : ĠQ W ED ocker Extension , ĊĠĠĠĠĠĠĠ Ġdocker Build Provider : ĠTask Provider < Docker Build Image > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister < Docker Multiple Regist ries Push Task >(" push Docker ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠGROUP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Push ĠDocker Ġimages Ġto Ġmultiple Ġremote Ġregist ries " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġonly If Ġ{ Ġdocker Ext . enabled . get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( docker Build Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimages . set ( docker Ext . docker Image . to FQ N Images ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ