@@ -13,6 +13,7 @@ import (
1313 "github.com/cli/browser"
1414 "github.com/mattn/go-isatty"
1515 "github.com/muesli/termenv"
16+ "github.com/spf13/cobra"
1617
1718 "github.com/anchordotdev/cli"
1819 "github.com/anchordotdev/cli/api"
@@ -22,12 +23,14 @@ import (
2223)
2324
2425var (
26+ CmdAuthSignin = cli .NewCmd [SignIn ](CmdAuth , "signin" , func (cmd * cobra.Command ) {
27+ cmd .Args = cobra .NoArgs
28+ })
29+
2530 ErrSigninFailed = errors .New ("sign in failed" )
2631)
2732
2833type SignIn struct {
29- Config * cli.Config
30-
3134 Source string
3235
3336 Hint tea.Model
@@ -41,14 +44,16 @@ func (s SignIn) UI() cli.UI {
4144}
4245
4346func (s * SignIn ) runTTY (ctx context.Context , tty termenv.File ) error {
47+ cfg := cli .ConfigFromContext (ctx )
48+
4449 output := termenv .DefaultOutput ()
4550 cp := output .ColorProfile ()
4651
4752 fmt .Fprintln (tty ,
4853 output .String ("# Run `anchor auth signin`" ).Bold (),
4954 )
5055
51- anc , err := api .NewClient (s . Config )
56+ anc , err := api .NewClient (cfg )
5257 if err != nil && err != api .ErrSignedOut {
5358 return err
5459 }
@@ -114,15 +119,15 @@ func (s *SignIn) runTTY(ctx context.Context, tty termenv.File) error {
114119 time .Sleep (time .Duration (codes .Interval ) * time .Second )
115120 }
116121 }
117- s . Config .API .Token = patToken
122+ cfg .API .Token = patToken
118123
119- userInfo , err := fetchUserInfo (s . Config )
124+ userInfo , err := fetchUserInfo (cfg )
120125 if err != nil {
121126 return err
122127 }
123128
124- kr := keyring.Keyring {Config : s . Config }
125- if err := kr .Set (keyring .APIToken , s . Config .API .Token ); err != nil {
129+ kr := keyring.Keyring {Config : cfg }
130+ if err := kr .Set (keyring .APIToken , cfg .API .Token ); err != nil {
126131 return err
127132 }
128133
@@ -136,15 +141,19 @@ func (s *SignIn) runTTY(ctx context.Context, tty termenv.File) error {
136141 return nil
137142}
138143
144+ // FIXME: dedup mostly identical RunTUI/RunTTY
145+
139146func (s * SignIn ) RunTUI (ctx context.Context , drv * ui.Driver ) error {
147+ cfg := cli .ConfigFromContext (ctx )
148+
140149 drv .Activate (ctx , & models.SignInHeader {})
141150
142151 if s .Hint == nil {
143152 s .Hint = & models.SignInHint {}
144153 }
145154 drv .Activate (ctx , s .Hint )
146155
147- anc , err := api .NewClient (s . Config )
156+ anc , err := api .NewClient (cfg )
148157 if err != nil && err != api .ErrSignedOut {
149158 return err
150159 }
@@ -165,7 +174,7 @@ func (s *SignIn) RunTUI(ctx context.Context, drv *ui.Driver) error {
165174 VerificationURL : codes .VerificationUri ,
166175 })
167176
168- if ! s . Config .NonInteractive {
177+ if ! cfg .NonInteractive {
169178 select {
170179 case <- confirmc :
171180 case <- ctx .Done ():
@@ -189,15 +198,15 @@ func (s *SignIn) RunTUI(ctx context.Context, drv *ui.Driver) error {
189198 time .Sleep (time .Duration (codes .Interval ) * time .Second )
190199 }
191200 }
192- s . Config .API .Token = patToken
201+ cfg .API .Token = patToken
193202
194- userInfo , err := fetchUserInfo (s . Config )
203+ userInfo , err := fetchUserInfo (cfg )
195204 if err != nil {
196205 return err
197206 }
198207
199- kr := keyring.Keyring {Config : s . Config }
200- if err := kr .Set (keyring .APIToken , s . Config .API .Token ); err != nil {
208+ kr := keyring.Keyring {Config : cfg }
209+ if err := kr .Set (keyring .APIToken , cfg .API .Token ); err != nil {
201210 return err
202211 }
203212
0 commit comments