@@ -24,49 +24,52 @@ func newSetupCommand(v *viper.Viper, stdio terminal.Stdio) (cmd *cobra.Command)
2424 RunE : opt .runE ,
2525 GroupID : configGroup .ID ,
2626 }
27+ flags := cmd .Flags ()
28+ flags .StringVarP (& opt .proxy , "proxy" , "p" , "" , "The proxy of GitHub" )
29+ flags .StringVarP (& opt .provider , "provider" , "" , "" , "The provider of hd configuration" )
2730 return
2831}
2932
3033type setupOption struct {
3134 stdio terminal.Stdio
3235 v * viper.Viper
36+
37+ proxy string
38+ provider string
3339}
3440
3541func (o * setupOption ) runE (cmd * cobra.Command , args []string ) (err error ) {
36- var (
37- proxyGitHub string
38- provider string
39- )
40-
4142 logger := log .GetLoggerFromContextOrDefault (cmd )
42- if proxyGitHub , err = selectFromList ([]string {"" , "ghproxy.com" , "gh.api.99988866.xyz" , "mirror.ghproxy.com" },
43- o .v .GetString ("proxy-github" ),
44- "Select proxy-github" , o .stdio ); err == nil {
45- o .v .Set ("proxy-github" , proxyGitHub )
46- } else {
47- return
43+
44+ if o .proxy == "" {
45+ if o .proxy , err = selectFromList ([]string {"" , "ghproxy.com" , "gh.api.99988866.xyz" , "mirror.ghproxy.com" },
46+ o .v .GetString ("proxy-github" ),
47+ "Select proxy-github" , o .stdio ); err != nil {
48+ return
49+ }
4850 }
51+ o .v .Set ("proxy-github" , o .proxy )
4952
50- if provider , err = selectFromList ([] string { "github" , "gitee" }, o . v . GetString ( "provider" ),
51- "Select provider" , o . stdio ); err == nil {
52- o . v . Set ( " provider" , provider )
53- } else {
54- return
53+ if o . provider == "" {
54+ if o . provider , err = selectFromList ([] string { "github" , "gitee" }, o . v . GetString ( "provider" ),
55+ "Select provider" , o . stdio ); err != nil {
56+ return
57+ }
5558 }
59+ o .v .Set ("provider" , o .provider )
5660
5761 var configDir string
5862 fetcher := & installer.DefaultFetcher {}
59- if configDir , err = fetcher .GetHomeDir (); err != nil {
60- return
61- }
62- if err = os .MkdirAll (configDir , 0750 ); err != nil {
63- err = fmt .Errorf ("failed to create directory: %s, error: %v" , configDir , err )
64- return
65- }
63+ if configDir , err = fetcher .GetHomeDir (); err == nil {
64+ if err = os .MkdirAll (configDir , 0750 ); err != nil {
65+ err = fmt .Errorf ("failed to create directory: %s, error: %v" , configDir , err )
66+ return
67+ }
6668
67- configPath := filepath .Join (configDir , ".config" , "hd.yaml" )
68- logger .Info ("write config into:" , configPath )
69- err = o .v .WriteConfigAs (configPath )
69+ configPath := filepath .Join (configDir , ".config" , "hd.yaml" )
70+ logger .Info ("write config into:" , configPath )
71+ err = o .v .WriteConfigAs (configPath )
72+ }
7073 return
7174}
7275
0 commit comments