Skip to content

Commit d855ba8

Browse files
committed
Add rollback
1 parent 0b2a3bf commit d855ba8

File tree

2 files changed

+79
-1
lines changed

2 files changed

+79
-1
lines changed

main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ func main() {
2929
" login Authenticate in order to begin managing your apps\n" +
3030
" logout Log out of the current session\n" +
3131
" app View and manage your CodePush apps\n" +
32-
" create_bundle Create react native hotfix bundle"
32+
" create_bundle Create react native hotfix bundle\n" +
33+
" rollback Rollback last dundle"
34+
3335
var command string
3436
if len(args) <= 0 {
3537
fmt.Println(help)
@@ -46,6 +48,8 @@ func main() {
4648
opt.App{}.CreateBundle()
4749
case "app":
4850
opt.App{}.App(args)
51+
case "rollback":
52+
opt.App{}.Rollback()
4953
default:
5054
fmt.Println(help)
5155
return

opt/app.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)