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