@@ -15,6 +15,7 @@ import (
15
15
"os/exec"
16
16
"strconv"
17
17
"strings"
18
+ "time"
18
19
19
20
"com.lc.go.codepush/client/constants"
20
21
"com.lc.go.codepush/client/utils"
@@ -601,3 +602,76 @@ func (App) deleteDeployment() {
601
602
fmt .Println ("Delete deployment " + deploymentName + " success" )
602
603
}
603
604
}
605
+
606
+ type rollbackReq struct {
607
+ AppName * string `json:"appName" binding:"required"`
608
+ Deployment * string `json:"deployment" binding:"required"`
609
+ Version * string `json:"version" binding:"required"`
610
+ }
611
+
612
+ type rollbackRep struct {
613
+ Success * bool `json:"success"`
614
+ Version * string `json:"version"`
615
+ PackId * int `json:"packId"`
616
+ Size * int64 `json:"size"`
617
+ Hash * string `json:"hash"`
618
+ CreateTime * int64 `json:"createTime"`
619
+ }
620
+
621
+ func (App ) Rollback () {
622
+ saveLoginInfo , err := utils .GetLoginfo ()
623
+ if err != nil {
624
+ log .Println (err .Error ())
625
+ return
626
+ }
627
+
628
+ var targetVersion string
629
+ var appName string
630
+ var deployment string
631
+
632
+ flag .StringVar (& targetVersion , "t" , "" , "Target version" )
633
+ flag .StringVar (& appName , "n" , "" , "AppName" )
634
+ flag .StringVar (& deployment , "d" , "" , "DeploymentName" )
635
+ flag .Parse ()
636
+
637
+ if appName == "" || deployment == "" || targetVersion == "" {
638
+ fmt .Println ("Usage: code-push-go rollback -n <AppName> -d <deployment> -t <TargetVersion>" )
639
+ return
640
+ }
641
+
642
+ rollbackReq := rollbackReq {
643
+ AppName : & appName ,
644
+ Deployment : & deployment ,
645
+ Version : & targetVersion ,
646
+ }
647
+
648
+ jsonByte , _ := json .Marshal (rollbackReq )
649
+ Url , err := url .Parse (saveLoginInfo .ServerUrl + "/rollback" )
650
+ if err != nil {
651
+ log .Panic ("server url error :" , err .Error ())
652
+ }
653
+ reqStatus , err := utils .HttpPostToken [rollbackRep ](Url .String (), jsonByte , & saveLoginInfo .Token )
654
+ if err != nil {
655
+ fmt .Println (err .Error ())
656
+ return
657
+ }
658
+ if * reqStatus .Success {
659
+ fmt .Println ("Rollback " + deployment + " success,currut version:" )
660
+ titles := []string {"DeploymentName" , "AppVersion" , "PackId" , "Size" , "Hash" , "CreateTime" }
661
+ table , err := gotable .Create (titles ... )
662
+ if err != nil {
663
+ fmt .Println (err .Error ())
664
+ return
665
+ }
666
+ var columns []string
667
+ if reqStatus .PackId == nil {
668
+ columns = []string {deployment , * reqStatus .Version }
669
+ } else {
670
+ columns = []string {deployment , * reqStatus .Version , strconv .Itoa (* reqStatus .PackId ), strconv .FormatInt (* reqStatus .Size , 10 ), * reqStatus .Hash , time .Unix (0 , * reqStatus .CreateTime * 1e6 ).String ()}
671
+ }
672
+
673
+ table .AddRow (columns )
674
+ fmt .Println (table )
675
+
676
+ }
677
+ }
0 commit comments