@@ -23,12 +23,13 @@ import (
2323 "os"
2424 "strings"
2525
26+ "github.com/CloudNativeAI/modctl/pkg/config"
2627 "github.com/CloudNativeAI/modctl/pkg/oci"
2728 "github.com/spf13/cobra"
2829 "github.com/spf13/viper"
2930)
3031
31- var loginOpts = loginOptions {}
32+ var loginConfig = config . NewLogin ()
3233
3334type loginOptions struct {
3435 username string
@@ -45,16 +46,20 @@ var loginCmd = &cobra.Command{
4546 SilenceUsage : true ,
4647 FParseErrWhitelist : cobra.FParseErrWhitelist {UnknownFlags : true },
4748 RunE : func (cmd * cobra.Command , args []string ) error {
49+ if err := loginConfig .Validate (); err != nil {
50+ return err
51+ }
52+
4853 return runLogin (context .Background (), args [0 ])
4954 },
5055}
5156
5257// init initializes login command.
5358func init () {
5459 flags := loginCmd .Flags ()
55- flags .StringVarP (& loginOpts . username , "username" , "u" , "" , "Username for login" )
56- flags .StringVarP (& loginOpts . password , "password" , "p" , "" , "Password for login" )
57- flags .BoolVar (& loginOpts . passwordStdin , "password-stdin" , false , "Take the password from stdin" )
60+ flags .StringVarP (& loginConfig . Username , "username" , "u" , "" , "Username for login" )
61+ flags .StringVarP (& loginConfig . Password , "password" , "p" , "" , "Password for login" )
62+ flags .BoolVar (& loginConfig . PasswordStdin , "password-stdin" , false , "Take the password from stdin" )
5863
5964 if err := viper .BindPFlags (flags ); err != nil {
6065 panic (fmt .Errorf ("bind cache login flags to viper: %w" , err ))
@@ -63,26 +68,19 @@ func init() {
6368
6469// runLogin runs the login modctl.
6570func runLogin (ctx context.Context , registry string ) error {
66- if len (loginOpts .username ) == 0 {
67- return fmt .Errorf ("missing username" )
68- }
6971 // read password from stdin if password-stdin is set
70- if loginOpts . passwordStdin {
72+ if loginConfig . PasswordStdin {
7173 fmt .Print ("Enter password: " )
7274 reader := bufio .NewReader (os .Stdin )
7375 password , err := reader .ReadString ('\n' )
7476 if err != nil {
7577 return err
7678 }
7779
78- loginOpts .password = strings .TrimSpace (password )
79- }
80-
81- if len (loginOpts .password ) == 0 {
82- return fmt .Errorf ("missing password" )
80+ loginConfig .Password = strings .TrimSpace (password )
8381 }
8482
85- if err := oci .Login (ctx , registry , loginOpts . username , loginOpts . password ); err != nil {
83+ if err := oci .Login (ctx , registry , loginConfig . Username , loginConfig . Password ); err != nil {
8684 return err
8785 }
8886
0 commit comments