package Ġpic oc li . examples . kotlin Ċ Ċ import Ġpic oc li . CommandLine Ċ import Ġpic oc li . CommandLine . Command Ċ import Ġpic oc li . CommandLine . Help Command Ċ import Ġjava . util . Locale Ċ import Ġkotlin . system . exit Process Ċ Ċ @ Command ( name Ġ= Ġ" ISO Code Resolve ", Ġmixin Standard Help Options Ġ= Ġtrue , Ġversion Ġ= Ġ[" 1 . 0 "], Ġsub commands Ġ= Ġ[ ĠHelp Command :: class Ġ], ĊĠĠĠ Ġdescription Ġ= Ġ[" Resolve ĠISO Ġcountry Ġcodes Ġ( ISO - 3 1 6 6 - 1 ) Ġor Ġlanguage Ġcodes Ġ( ISO Ġ 6 3 9 - 1 Ġor Ġ- 2 )" ]) Ċ class ĠSub Cmd s Via Methods Ġ: ĠRunnable Ġ Ġ{ ĊĠĠĠ Ġ@ CommandLine . Spec ĊĠĠĠ Ġval Ġspec : ĠCommandLine . Model . Command Spec ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Command ( description Ġ= Ġ[" Resolve ĠISO Ġcountry Ġcode Ġ( ISO - 3 1 6 6 - 1 , ĠAlpha - 2 Ġcode )" ]) ĊĠĠĠ Ġfun Ġcountry ( Ġ@ CommandLine . Parameters ( Ġar ity Ġ= Ġ" 1 .. * n ", Ġparam Label Ġ= Ġ"< country Ġcode >", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[" country Ġcode ( s ) Ġto Ġbe Ġresolved "] Ġ) Ġvar arg Ġcountry Codes Ġ: ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( code Ġin Ġcountry Codes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ code . toUpperCase ()} : Ġ" Ġ+ ĠLocale ("", Ġcode ). display Country ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Command ( description Ġ= Ġ[" Resolve ĠISO Ġlanguage Ġcode Ġ( ISO Ġ 6 3 9 - 1 Ġor Ġ- 2 , Ġtwo / three Ġletters )" ]) ĊĠĠĠ Ġfun Ġlanguage ( Ġ@ CommandLine . Parameters ( Ġar ity Ġ= Ġ" 1 .. * n ", Ġparam Label Ġ= Ġ"< language Ġcode >", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ[" language Ġcode ( s ) Ġto Ġbe Ġresolved "] Ġ) Ġvar arg Ġlanguage Codes Ġ: ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( code Ġin Ġlanguage Codes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ code . toUpperCase ()} : Ġ" Ġ+ ĠLocale ( code ). display Language ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ= Ġthrow ĠCommandLine . Parameter Exception ( spec ?. command Line (), Ġ" Specify Ġa Ġsub command ") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommandLine ( Sub Cmd s Via Methods ()). execute (* args ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ // ĠNOTE : Ġbelow Ġis Ġan Ġalternative Ġto Ġdefining Ġa Ġ@ Jvm Static Ġmain Ġfunction Ġin Ġa Ġcompanion Ġobject : Ċ // Ġfun Ġmain ( args : ĠArray < String >) Ġ: ĠUnit Ġ= Ġexit Process ( CommandLine ( Sub Cmd s Via Methods ()). execute (* args )) Ċ