diff --git a/cmd/edge-admin/main.go b/cmd/edge-admin/main.go index 36bc0eec..a1b4ec1b 100644 --- a/cmd/edge-admin/main.go +++ b/cmd/edge-admin/main.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "flag" "fmt" "github.com/TeaOSLab/EdgeAdmin/internal/apps" "github.com/TeaOSLab/EdgeAdmin/internal/configs" @@ -24,7 +25,7 @@ func main() { var app = apps.NewAppCmd(). Version(teaconst.Version). Product(teaconst.ProductName). - Usage(teaconst.ProcessName+" [-v|start|stop|restart|service|daemon|reset|recover|demo|upgrade]"). + Usage(teaconst.ProcessName+" [-h|-v|start|stop|restart|service|daemon|reset|recover|demo|upgrade]"). Usage(teaconst.ProcessName+" [dev|prod]"). Option("-h", "show this help"). Option("-v", "show version"). @@ -38,7 +39,7 @@ func main() { Option("demo", "switch to demo mode"). Option("dev", "switch to 'dev' mode"). Option("prod", "switch to 'prod' mode"). - Option("upgrade", "upgrade from official site") + Option("upgrade [--url=URL]", "upgrade from official site or an url") app.On("daemon", func() { nodes.NewAdminNode().Daemon() @@ -138,7 +139,12 @@ func main() { } }) app.On("upgrade", func() { - var manager = utils.NewUpgradeManager("admin") + var downloadURL = "" + var flagSet = flag.NewFlagSet("", flag.ContinueOnError) + flagSet.StringVar(&downloadURL, "url", "", "new version download url") + _ = flagSet.Parse(os.Args[2:]) + + var manager = utils.NewUpgradeManager("admin", downloadURL) log.Println("checking latest version ...") var ticker = time.NewTicker(1 * time.Second) go func() { diff --git a/internal/utils/upgrade_manager.go b/internal/utils/upgrade_manager.go index 274803ad..96432366 100644 --- a/internal/utils/upgrade_manager.go +++ b/internal/utils/upgrade_manager.go @@ -52,11 +52,14 @@ type UpgradeManager struct { writer *UpgradeFileWriter body io.ReadCloser isCancelled bool + + downloadURL string } -func NewUpgradeManager(component string) *UpgradeManager { +func NewUpgradeManager(component string, downloadURL string) *UpgradeManager { return &UpgradeManager{ - component: component, + component: component, + downloadURL: downloadURL, client: &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ @@ -96,8 +99,8 @@ func (this *UpgradeManager) Start() error { } // 检查新版本 - var downloadURL = "" - { + var downloadURL = this.downloadURL + if len(downloadURL) == 0 { var url = teaconst.UpdatesURL var osName = runtime.GOOS if Tea.IsTesting() && osName == "darwin" {