package Ġorg . h ild an . bob . secrets Ċ Ċ import Ġcom . github . aj alt . cli kt . output . Term Ui Ċ import Ġcom . github . aj alt . cli kt . parameters . options . default Ċ import Ġcom . github . aj alt . cli kt . parameters . options . default Lazy Ċ import Ġcom . github . aj alt . cli kt . parameters . options . option Ċ import Ġcom . github . aj alt . cli kt . parameters . options . prompt Ċ import Ġorg . h ild an . bob . services . son atype . Son atype Ċ Ċ open Ġclass ĠSon atype Secrets Definition Ġ: ĠSecret Option Group ( ĊĠĠĠ Ġprovider Name Ġ= Ġ" OSS ĠSon atype ", ĊĠĠĠ Ġswitch Name Ġ= Ġ"-- son atype ", Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġsecret Names : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠlistOf ( user Token Secret Name , Ġkey Secret Name ) ĊĊĠĠĠ Ġprotected Ġval Ġuser Token Secret Name Ġby Ġoption ( ĊĠĠĠĠĠĠĠ Ġ"-- oss rh - user - secret - name ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" The Ġname Ġof Ġthe Ġsecret Ġvariable Ġholding Ġthe ĠO SS ĠSon atype Ġuser Ġtoken ", ĊĠĠĠ Ġ). default (" OSS RH _ USER _ TOKEN ") ĊĊĠĠĠ Ġprotected Ġval Ġkey Secret Name Ġby Ġoption ( ĊĠĠĠĠĠĠĠ Ġ"-- oss rh - key - secret - name ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" The Ġname Ġof Ġthe Ġsecret Ġvariable Ġholding Ġthe ĠO SS ĠSon atype ĠAPI Ġkey ", ĊĠĠĠ Ġ). default (" OSS RH _ KEY ") Ċ } Ċ Ċ class ĠSon atype Provider ( val Ġdefault User Lazy : Ġ() Ġ-> ĠString ?) Ġ: ĠSon atype Secrets Definition (), ĠSecret Provider Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġuser Ġby Ġoption ( ĊĠĠĠĠĠĠĠ Ġ"-- oss rh - login ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" Your ĠO SS ĠSon atype Ġlogin Ġ( defaults Ġto Ġthe ĠGitHub Ġusername )", ĊĠĠĠ Ġ). default Lazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault User Ġ= Ġdefault User Lazy () ĊĠĠĠĠĠĠĠ ĠTerm Ui . prompt (" Your ĠO SS ĠSon atype Ġlogin ", Ġdefault Ġ= Ġdefault User ) Ġ?: Ġdefault User Ġ?: Ġerror (" OSS ĠSon atype Ġuser Ġrequired ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpassword Ġby Ġoption ( ĊĠĠĠĠĠĠĠ Ġ"-- oss rh - password ", ĊĠĠĠĠĠĠĠ Ġhelp Ġ= Ġ" Your ĠO SS ĠSon atype Ġpassword ", ĊĠĠĠ Ġ). prompt ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Your ĠO SS ĠSon atype Ġpassword ", ĊĠĠĠĠĠĠĠ Ġhide Input Ġ= Ġtrue , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfetch Secrets (): ĠList < Secret > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġson atype Keys Ġ= ĠSon atype . fetch Keys ( user , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Secret Ġ= ĠSecret ( user Token Secret Name , Ġson atype Keys . user Token ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Secret Ġ= ĠSecret ( key Secret Name , Ġson atype Keys . apiKey ) ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( user Secret , Ġkey Secret ) ĊĠĠĠ Ġ} Ċ } Ċ