package Ġcom . j mer anda . gl azy . entry . commands Ċ Ċ import Ġcom . j mer anda . gl azy . lib . objects .* Ċ Ċ import Ġkotlin . reflect . K Property 1 Ċ import Ġkotlin . reflect . full . member Properties ĊĊ Ċ /** Ċ Ġ* ĠBuild Ġa Ġthree Ġletter Ġdescription Ġof Ġa Ġusers Ġpermissions Ġlevel . Ċ Ġ* Ċ Ġ* ĠThe Ġthree Ġletters Ġrefer Ġto Ġadmin , Ġpush , Ġand Ġpull Ġrespectively . ĠWhile Ġall Ġusers Ġwith Ġpush Ċ Ġ* Ġpermissions Ġhave Ġpull Ġpermissions , Ġboth Ġare Ġlisted Ġto Ġdifferent iate Ġbetween Ġa Ġuser Ġwith Ġonly Ċ Ġ* Ġpull Ġa cess Ġ(' p ') Ġand Ġa Ġuser Ġwith Ġpush Ġaccess Ġ(' pp ') Ċ Ġ* Ċ Ġ* Ġ@ param Ġuser ĠThe Ġuser Ġobject Ġwho Ġpermissions Ġto Ġrepresent Ġas Ġa Ġstring . Ċ Ġ* Ġ@ return ĠA Ġthree Ġletter Ġstring Ġden oting Ġa Ġusers Ġpermission Ġlevel . Ċ Ġ*/ Ċ fun Ġget Permission String ( user : ĠUser ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġ. append ( if Ġ( user . permissions !!. admin ) Ġ{ Ġ" a " Ġ} Ġelse Ġ{ Ġ" Ġ" Ġ}) ĊĠĠĠĠĠĠĠ Ġ. append ( if Ġ( user . permissions !!. push ) Ġ{ Ġ" p " Ġ} Ġelse Ġ{ Ġ" Ġ" Ġ}) ĊĠĠĠĠĠĠĠ Ġ. append ( if Ġ( user . permissions !!. pull ) Ġ{ Ġ" p " Ġ} Ġelse Ġ{ Ġ" Ġ" Ġ}) ĊĠĠĠĠĠĠĠ Ġ. toString () Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġa Ġlabel Ġto Ġthe Ġconsole . Ċ Ġ*/ Ċ fun Ġdisplay Label ( label : ĠLabel ) Ġ{ ĊĠĠĠ Ġprintln ( label . name ) Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġan Ġissue Ġto Ġthe Ġconsole . Ċ Ġ* Ċ Ġ* Ġ@ param Ġissue ĠThe Ġissue Ġto Ġdisplay . Ċ Ġ*/ Ċ fun Ġdisplay Issue ( issue : ĠIssue ) Ġ{ ĊĠĠĠ Ġprintln ("[ ${ issue . number }] Ġ${ issue . title }") Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġa Ġpull Ġrequest . Ċ Ġ* Ċ Ġ* Ġ@ param Ġpull Request Ċ Ġ* Ġ@ param Ġfields ĠThe Ġspecific Ġfields Ġto Ġdisplay Ġin Ġaddition Ġto Ġthe Ġdefault Ġones . Ċ Ġ*/ Ċ fun Ġdisplay PullRequest ( pull Request : ĠPull Request , Ġfields : ĠList < String > ?) Ġ{ ĊĠĠĠ Ġvar Ġdetails Ġ= Ġ"[ ${ pull Request . number }] Ġ${ pull Request . title }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" draft Ġ: Ġ${ pull Request . draft }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" head : Ġ${ pull Request . head . label }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" base : Ġ${ pull Request . base . label }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" created : Ġ${ pull Request . createdAt }" ĊĊĠĠĠ Ġval Ġbad Fields Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġ// ĠConcat enate Ġadditional Ġfields Ġto Ġthe Ġdetails Ġstring . ĊĠĠĠ Ġfor Ġ( field Ġin Ġfields Ġ?: ĠlistOf ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġproperty Ġexists Ġin Ġclass Ġadd Ġto Ġdetails , Ġif Ġnot Ġadd Ġto Ġbad Fields . ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġrepo Ġproperty Ġvia Ġinput Ġfields . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= Ġpull Request :: class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. member Properties ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . name Ġ== Ġfield Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas ? ĠK Property 1 < PullRequest , ĠAny > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrint Ġthe Ġfield Ġname Ġand Ġvalue Ġto Ġthe Ġconsole . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Ġ!= Ġnull ) Ġdetails Ġ+= Ġ"\ n $ field : Ġ${ property . get ( pull Request )}" ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad Fields . add ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNotify Ġuser Ġof Ġun recognized Ġfields ĊĠĠĠ Ġif Ġ( bad Fields . size Ġ> Ġ 0 ) Ġdetails Ġ+= Ġ"\ n \ ng lazy : ĠCould Ġnot Ġrecognize Ġfield ( s ) Ġ'${ bad Fields . join ToString ()} '. \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġsee Ġ' https :// developer . github . com / v 3 / repos /# list - your - repositories ' Ġfor Ġavailable Ġfields " ĊĊĠĠĠ Ġprintln ( details ) Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġa Ġrepository . Ċ Ġ* Ċ Ġ* Ġ@ param Ġrepo ĠThe Ġrepository Ġto Ġdisplay / Ċ Ġ* Ġ@ param Ġfields ĠThe Ġlist Ġof Ġfields Ġto Ġdisplay Ġin Ġaddition Ġto Ġthe Ġdefault Ġones . Ċ Ġ*/ Ċ fun Ġdisplay Repo ( repo : ĠRepo , Ġfields : ĠList < String > ?) Ġ{ ĊĠĠĠ Ġvar Ġdetails Ġ= Ġ" full Ġname : Ġ${ repo . fullName }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" private : Ġ${ repo . private }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" created : Ġ${ repo . createdAt }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" https Ġurl : Ġ${ repo . clone Url }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh Ġurl : Ġ${ repo . ssh Url }\ n " ĊĊĠĠĠ Ġif Ġ( repo . is Template Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetails Ġ+= Ġ" is Ġtemplate : Ġ${ repo . is Template }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( repo . template Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetails Ġ+= Ġ" template : Ġ${ repo . template }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbad Fields Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠ Ġ// ĠConcat enate Ġadditional Ġfields Ġto Ġthe Ġdetails Ġstring . ĊĠĠĠ Ġfor Ġ( field Ġin Ġfields Ġ?: ĠlistOf ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġproperty Ġexists Ġin Ġclass Ġadd Ġto Ġdetails , Ġif Ġnot Ġadd Ġto Ġbad Fields . ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġrepo Ġproperty Ġvia Ġinput Ġfields . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Ġ= Ġrepo :: class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. member Properties ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . name Ġ== Ġfield Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġas ? ĠK Property 1 < Repo , ĠAny > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrint Ġthe Ġfield Ġname Ġand Ġvalue Ġto Ġthe Ġconsole . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( property Ġ!= Ġnull ) Ġdetails Ġ+= Ġ"\ n $ field : Ġ${ property . get ( repo )}" ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbad Fields . add ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠNotify Ġuser Ġof Ġun recognized Ġfields ĊĠĠĠ Ġif Ġ( bad Fields . size Ġ> Ġ 0 ) Ġdetails Ġ+= Ġ"\ n \ ng lazy : ĠCould Ġnot Ġrecognize Ġfield ( s ) Ġ'${ bad Fields . join ToString ()} '. \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġsee Ġ' https :// developer . github . com / v 3 / repos /# list - your - repositories ' Ġfor Ġavailable Ġfields " ĊĊĠĠĠ Ġprintln ( details ) Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġa Ġcollabor ator . Ċ Ġ*/ Ċ fun Ġdisplay Collabor ator ( coll aborator : ĠUser ) Ġ{ ĊĠĠĠ Ġprintln (" Ġ${ get Permission String ( coll aborator )} Ġ${ coll aborator . login }") Ċ } Ċ Ċ /** Ċ Ġ* ĠDisplay Ġa Ġcollabor ator Ġinv itation . Ċ Ġ*/ Ċ fun Ġdisplay Invite ( invite : ĠInv ite ) Ġ{ ĊĠĠĠ Ġprintln (" User Ġ'${ invite . inv iter . login }' Ġadded Ġ'${ invite . invite e . login }' Ġas Ġa Ġcollabor ator .") Ċ } Ċ