@@ -17,14 +17,13 @@ func CreateCheckUpdateCmd() *cobra.Command {
1717 Use : "check-update" ,
1818 Short : "检查是否有新版本" ,
1919 Long : "检查 GitHub 是否有新版本可用" ,
20- Run : func (cmd * cobra.Command , args []string ) {
20+ RunE : func (cmd * cobra.Command , args []string ) error {
2121 ctx := context .Background ()
2222
2323 fmt .Println ("正在检查更新..." )
2424 info , err := updater .CheckUpdate (ctx )
2525 if err != nil {
26- fmt .Printf ("检查失败: %v\n " , err )
27- os .Exit (1 )
26+ return fmt .Errorf ("检查更新失败: %w" , err )
2827 }
2928
3029 fmt .Printf ("当前版本: %s\n " , info .CurrentVersion )
@@ -36,6 +35,7 @@ func CreateCheckUpdateCmd() *cobra.Command {
3635 } else {
3736 fmt .Println ("\n 当前已是最新版本" )
3837 }
38+ return nil
3939 },
4040 }
4141}
@@ -46,37 +46,33 @@ func CreateUpdateCmd() *cobra.Command {
4646 Use : "update" ,
4747 Short : "更新到最新版本" ,
4848 Long : "从 GitHub Release 下载并更新到最新版本,如果守护进程正在运行则自动重启" ,
49- Run : func (cmd * cobra.Command , args []string ) {
49+ RunE : func (cmd * cobra.Command , args []string ) error {
5050 ctx := context .Background ()
5151
5252 fmt .Println ("正在检查更新..." )
5353 info , err := updater .CheckUpdate (ctx )
5454 if err != nil {
55- fmt .Printf ("检查失败: %v\n " , err )
56- os .Exit (1 )
55+ return fmt .Errorf ("检查更新失败: %w" , err )
5756 }
5857
59- if ! info .HasUpdate {
60- fmt .Println ("当前已是最新版本" )
61- return
62- }
58+ if ! info .HasUpdate {
59+ fmt .Println ("当前已是最新版本" )
60+ return nil
61+ }
6362
6463 fmt .Printf ("发现新版本: %s -> %s\n " , info .CurrentVersion , info .LatestVersion )
6564
6665 wasRunning := IsRunning ()
6766 if wasRunning {
6867 fmt .Println ("正在停止守护进程..." )
6968 if err := StopDaemon (); err != nil {
70- fmt .Printf ("停止失败: %v\n " , err )
71- fmt .Println ("请手动停止后再更新" )
72- os .Exit (1 )
69+ return fmt .Errorf ("停止守护进程失败,请手动停止后再更新: %w" , err )
7370 }
7471 time .Sleep (2 * time .Second )
7572 }
7673
7774 if err := updater .PerformUpdate (ctx , info ); err != nil {
78- fmt .Printf ("更新失败: %v\n " , err )
79- os .Exit (1 )
75+ return fmt .Errorf ("更新失败: %w" , err )
8076 }
8177
8278 fmt .Println ("\n 更新成功!" )
@@ -86,26 +82,22 @@ func CreateUpdateCmd() *cobra.Command {
8682
8783 execPath , err := os .Executable ()
8884 if err != nil {
89- fmt .Printf ("获取可执行文件路径失败: %v\n " , err )
90- fmt .Println ("请手动启动: cert-deploy daemon" )
91- os .Exit (1 )
85+ return fmt .Errorf ("获取可执行文件路径失败,请手动启动: cert-deploy daemon: %w" , err )
9286 }
9387
9488 restartCmd := exec .Command (execPath , "daemon" , "-c" , ConfigFile )
9589 if err := restartCmd .Start (); err != nil {
96- fmt .Printf ("启动失败: %v\n " , err )
97- fmt .Println ("请手动启动: cert-deploy daemon" )
98- os .Exit (1 )
90+ return fmt .Errorf ("守护进程启动失败,请手动启动: cert-deploy daemon: %w" , err )
9991 }
10092
10193 time .Sleep (1 * time .Second )
10294
10395 if ! IsRunning () {
104- fmt .Println ("启动失败,请手动启动: cert-deploy daemon" )
105- os .Exit (1 )
96+ return fmt .Errorf ("守护进程启动失败,请手动启动: cert-deploy daemon" )
10697 }
10798 fmt .Println ("守护进程已重启" )
10899 }
100+ return nil
109101 },
110102 }
111103}
0 commit comments