package Ġio . k uber ig . gradle . tasks Ċ Ċ import Ġio . k uber ig . init . ServiceAccount Creator Ċ import Ġio . k uber ig . kubectl . Error Context Result Ċ import Ġio . k uber ig . kubectl . K ubectl Config Reader Ċ import Ġio . k uber ig . kubectl . Ok Context Result Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġorg . gradle . api . tasks . options . Option Ċ Ċ abstract Ġclass ĠInit Environment Task : ĠAbstract Kube R ig Task () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġenvironment Name Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġapi Server Url Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġcurrent K ubectl Context Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġservice Account Ġ= Ġ" k uber ig " ĊĠĠĠ Ġprivate Ġvar Ġdefault Namespace Ġ= Ġ" default " ĊĊĠĠĠ Ġ@ Input ĊĠĠĠ Ġfun Ġget Environment Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . environment Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Input ĊĠĠĠ Ġfun Ġget Api Server Url (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . api Server Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( option Ġ= Ġ" name ", Ġdescription Ġ= Ġ" The Ġname Ġof Ġthe Ġenvironment Ġthat Ġyou Ġwant Ġto Ġcreate ") ĊĠĠĠ Ġfun Ġset Environment Name ( environment Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . environment Name = Ġenvironment Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( option Ġ= Ġ" api Server Url ", Ġdescription Ġ= Ġ" The ĠURL Ġof Ġthe Ġapi Ġserver Ġof Ġyour Ġcluster ") ĊĠĠĠ Ġfun Ġset Api Server Url ( api Server Url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . api Server Url Ġ= Ġapi Server Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( option Ġ= Ġ" current K ubectl Context ", Ġdescription Ġ= Ġ" From Ġthe Ġcurrent Ġkubectl Ġcontext ") ĊĠĠĠ Ġfun ĠsetCurrent K ubectl Context ( current K ubectl Context : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . current K ubectl Context Ġ= Ġcurrent K ubectl Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( option Ġ= Ġ" service Account ", Ġdescription Ġ= Ġ" Allow s Ġyou Ġto Ġoverwrite Ġthe Ġdefault Ġservice Ġaccount Ġname Ġ( k uber ig )") ĊĠĠĠ Ġfun Ġset ServiceAccount ( service Account : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . service Account Ġ= Ġservice Account ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Option ( option Ġ= Ġ" default Namespace ", Ġdescription Ġ= Ġ" Allow s Ġyou Ġto Ġspecify Ġthe Ġdefault Ġnamespace Ġ( ignored Ġwhen Ġ-- current K ubectl Context Ġflag Ġis Ġused )") ĊĠĠĠ Ġfun ĠsetDefault Namespace ( default Namespace : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . default Namespace Ġ= Ġdefault Namespace ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġcreate Environment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . environment Name Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("-- name Ġis Ġrequired ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġroot FileSystem Ġ= Ġthis . kube R ig Extension (). root FileSystem () ĊĠĠĠĠĠĠĠ Ġval Ġenvironment FileSystem Ġ= Ġroot FileSystem . environment ( this . environment Name ) ĊĊĠĠĠĠĠĠĠ Ġenvironment FileSystem . init () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current K ubectl Context ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkubectl Config Reader Ġ= ĠK ubectl Config Reader () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġcontext Result Ġ= Ġkubectl Config Reader . read K ubectl Config ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOk Context Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Account Creator Ġ= ĠService Account Creator ( kube R ig Extension (). flags ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Account Creator . create Default ServiceAccount ( context Result , Ġenvironment FileSystem , Ġthis . service Account ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment FileSystem . store Cluster Certificate Authority Data ( context Result . cluster Detail . certificate Authority Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment FileSystem . init Configs File ( context Result . cluster Detail . server , Ġcontext Result . namespace , Ġthis . service Account ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Context Result Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Failed Ġto Ġread Ġcurrent Ġkubectl Ġcontext :[ error ] ${ context Result . error }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . api Server Url Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("-- api Server Url Ġis Ġrequired ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment FileSystem . init Configs File ( this . api Server Url , Ġthis . default Namespace , Ġthis . service Account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }