package Ġcom . ade vint a . oss . zo e . cli . commands Ċ Ċ import Ġcom . ade vint a . oss . zo e . cli . utils . global Term Colors Ċ import Ġcom . ade vint a . oss . zo e . cli . utils . yaml Ċ import Ġcom . ade vint a . oss . zo e . core . utils . build Json Ċ import Ġcom . ade vint a . oss . zo e . core . utils . logger Ċ import Ġcom . ade vint a . oss . zo e . core . utils . toJson Node Ċ import Ġcom . fasterxml . jackson . core . Json Processing Exception Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . data format . yaml . YAML Factory Ċ import Ġcom . fasterxml . jackson . data format . yaml . YAML Generator Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . core . No Op Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . core . sub commands Ċ import Ġcom . github . aj alt . cli kt . output . Term Ui Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . argument Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . multiple Ċ import Ġcom . github . aj alt . cli kt . parameters . groups . mut ually Exclusive Options Ċ import Ġcom . github . aj alt . cli kt . parameters . groups . required Ċ import Ġcom . github . aj alt . cli kt . parameters . groups . single Ċ import Ġcom . github . aj alt . cli kt . parameters . options . convert Ċ import Ġcom . github . aj alt . cli kt . parameters . options . option Ċ import Ġcom . github . aj alt . cli kt . parameters . options . required Ċ import Ġcom . github . aj alt . cli kt . parameters . options . switch Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ import Ġjava . io . File Ċ Ċ class ĠAli ases Command Ġ: ĠNo Op Cli kt Command ( name Ġ= Ġ" aliases ", Ġhelp Ġ= Ġ" Manage Ġz oe Ġaliases ") Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġaliases File ( home : ĠString ): ĠFile Ġ= ĠFile ( home ). resolve (" aliases . yml ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġaliases Manager ( home : ĠString ): ĠAli ases Manager Ġ= ĠYaml File S ourced Aliases Manager ( aliases File ( home )) ĊĊĠĠĠĠĠĠĠ Ġfun Ġaliases ( home : ĠString ): ĠMap < String , Ġkotlin . collections . List < String >> Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Manager ( home ). list () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( err : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Error Ġfetching Ġthe Ġaliases ", Ġerr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsub commands ( Init (), ĠList (), ĠAdd (), ĠRemove (), ĠEdit ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠInit Ġ: ĠCli kt Command ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" init ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" Load Ġthe Ġdefault Ġaliases Ġ( does n 't Ġoverride Ġcurrent Ġones )" ĊĠĠĠ Ġ), ĠK oin Component Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġctx Ġby Ġinject < Cli Context >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Manager ( ctx . home ). add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tc " Ġto ĠlistOf (" topics ", Ġ" consume "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tp " Ġto ĠlistOf (" topics ", Ġ" produce "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠList Ġ: ĠCli kt Command ( name Ġ= Ġ" list ", Ġhelp Ġ= Ġ" List Ġcurrently Ġdefined Ġaliases "), ĠK oin Component Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġctx Ġby Ġinject < Cli Context >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Manager ( ctx . home ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. list () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toJson Node () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġbuild Json Ġ{ Ġset < JsonNode >(" aliases ", Ġit ) Ġ} Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . term . output . format ( response ) Ġ{ Ġecho ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠEdit Ġ: ĠCli kt Command ( name Ġ= Ġ" edit ", Ġhelp Ġ= Ġ" Edit Ġthe Ġaliases Ġfile Ġdirectly "), ĠK oin Component Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġctx Ġby Ġinject < Cli Context >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTerm Ui . edit File ( aliases File ( ctx . home ). absolute Path , Ġrequire Save Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAdd Ġ: ĠCli kt Command ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" add ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" Add Ġan Ġalias ", ĊĠĠĠĠĠĠĠ Ġprint Help On Empty Args Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġe pi log Ġ= Ġwith ( global Term Colors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ``` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Examples : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠAdd Ġan Ġalias Ġnamed Ġ' pt l ' Ġfor Ġ'- e Ġpro Ġtopics Ġlist ': ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ> Ġ${ bold (""" zo e Ġaliases Ġadd Ġ-- name Ġtl Ġ-- Ġ- e Ġpro Ġtopics Ġlist "" ")} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠThen Ġyou Ġcan Ġuse Ġit Ġusing : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ> Ġ${ bold (""" zo e Ġp tl "" ")} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ``` """. trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ), ĠK oin Component Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġctx Ġby Ġinject < Cli Context >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġalias Ġby Ġoption ("-- name ", Ġhelp Ġ= Ġ" Alias Ġname "). required () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcommand Ġby Ġargument (" command ", Ġhelp Ġ= Ġ" Ali ased Ġcommand "). multiple ( required Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Manager ( ctx . home ). add ( map Of ( alias Ġto Ġcommand )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRemove Ġ: ĠCli kt Command ( name Ġ= Ġ" remove ", Ġhelp Ġ= Ġ" Remove Ġaliases "), ĠK oin Component Ġ{ ĊĠĠĠĠĠĠĠ Ġsealed Ġclass ĠAlias ToRemove Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠSingle ( val Ġname : ĠString ) Ġ: ĠAlias ToRemove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠAll Ġ: ĠAlias ToRemove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġctx Ġby Ġinject < Cli Context >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġalias : ĠAlias ToRemove Ġby Ġmut ually Exclusive Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption (). switch ("-- all " Ġto ĠAlias ToRemove . All ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption ("-- name "). convert Ġ{ ĠAlias ToRemove . Single ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ). single (). required () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġaliases Manager ( ctx . home ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġto Remove Ġ= Ġalias ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAlias ToRemove . Single Ġ-> Ġmanager . remove ( listOf ( to Remove . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlias ToRemove . All Ġ-> Ġmanager . removeAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ private Ġinterface ĠAli ases Manager Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġadd ( aliases : ĠMap < String , ĠList < String >>) ĊĠĠĠ Ġsuspend Ġfun Ġremove ( aliases : ĠList < String >) ĊĠĠĠ Ġsuspend Ġfun Ġremove All () ĊĠĠĠ Ġsuspend Ġfun Ġlist (): ĠMap < String , ĠList < String >> Ċ } Ċ Ċ private Ġclass ĠYaml File S ourced Aliases Manager ( private Ġval Ġpath : ĠFile ) Ġ: ĠAli ases Manager Ġ{ ĊĠĠĠ Ġprivate Ġval Ġwriter Ġ= ĠObjectMapper ( ĊĠĠĠĠĠĠĠ ĠYAML Factory . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable ( YAML Generator . Feature . MIN IM IZE _ QUOT ES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable ( YAML Generator . Feature . IND ENT _ ARRAY S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. disable ( YAML Generator . Feature . WRITE _ DOC _ START _ MARKER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġadd ( aliases : ĠMap < String , ĠList < String >>) Ġ= Ġwrite Aliases ( load Aliases () Ġ+ Ġaliases ) ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove ( aliases : ĠList < String >) Ġ= Ġwrite Aliases ( load Aliases () Ġ- Ġaliases ) ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove All () Ġ= Ġwrite Aliases ( empty Map ()) ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlist (): ĠMap < String , ĠList < String >> Ġ= Ġload Aliases () ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Aliases (): ĠMap < String , ĠList < String >> Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpath . take If Ġ{ Ġit . exists () Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyaml . readValue < Map < String , ĠList < String >> >( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( err : ĠJson Processing Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Un readable Ġalias Ġfile Ġ'$ path '. ĠIf Ġthe Ġproblem Ġpers ists , Ġdelete Ġthe Ġfile Ġmanually . Ġ( err : Ġ$ err )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġempty Map () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġwrite Aliases ( aliases : ĠMap < String , ĠList < String >>) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ Ġwriter . writeValue ( path , Ġaliases ) Ġ} Ċ Ċ } Ċ Ċ fun Ġaliases Command () Ġ= ĠAli ases Command ()