11package upgrade
22
33import (
4+ "io"
5+ "net/http"
46 "os"
57 "path/filepath"
68 "runtime"
@@ -9,18 +11,17 @@ import (
911 "github.com/Masterminds/semver"
1012
1113 "github.com/devstream-io/devstream/internal/pkg/version"
14+ "github.com/devstream-io/devstream/pkg/util/downloader"
1215 "github.com/devstream-io/devstream/pkg/util/interact"
1316 "github.com/devstream-io/devstream/pkg/util/log"
14- "github.com/devstream-io/devstream/pkg/util/scm/git"
15- "github.com/devstream-io/devstream/pkg/util/scm/github"
1617)
1718
1819const (
1920 assetName = "dtm-" + runtime .GOOS + "-" + runtime .GOARCH
2021 dtmTmpFileName = "dtm-tmp"
2122 dtmBakFileName = "dtm-bak"
22- dtmOrg = "devstream-io "
23- dtmRepo = "devstream"
23+ dtmDownloadUrl = "https://download. devstream.io/ "
24+ latestVersion = "https://download. devstream.io/latest_version "
2425)
2526
2627// since dtm file name can be changeable by user,so it should be a variable to get current dtm file name
@@ -50,33 +51,26 @@ func Upgrade(continueDirectly bool) error {
5051 log .Debugf ("Dtm upgrade: work path is : %v" , workDir )
5152
5253 // 1. Get the latest release version
53- ghOptions := & git.RepoInfo {
54- Org : dtmOrg ,
55- Repo : dtmRepo ,
56- NeedAuth : false ,
57- WorkPath : workDir ,
58- }
59-
60- ghClient , err := github .NewClient (ghOptions )
54+ request , err := http .Get (latestVersion )
6155 if err != nil {
6256 return err
6357 }
6458
65- ltstReleaseTagName , err := ghClient .GetLatestReleaseTagName ()
59+ body , err := io .ReadAll (request .Body )
60+ latestReleaseTagName := string (body [0 : len (body )- 1 ])
6661 if err != nil {
6762 return err
6863 }
69- log .Debugf ("Dtm upgrade: got latest release version: %v" , ltstReleaseTagName )
64+ log .Debugf ("Dtm upgrade: got latest release version: %v" , latestReleaseTagName )
7065
7166 // 2. Check whether Upgrade is needed
72- // Use Semantic Version to judge. "https://semver.org/"
73- shouldUpgrade , err := checkUpgrade (version .Version , ltstReleaseTagName )
67+ // To Use Semantic Version to judge. "https://semver.org/"
68+ shouldUpgrade , err := checkUpgrade (version .Version , latestReleaseTagName )
7469 if err != nil {
7570 return err
7671 }
77-
7872 if shouldUpgrade {
79- log .Infof ("Dtm upgrade: new dtm version: %v is available." , ltstReleaseTagName )
73+ log .Infof ("Dtm upgrade: new dtm version: %v is available." , latestReleaseTagName )
8074 if ! continueDirectly {
8175 continued := interact .AskUserIfContinue ("Would you like to Upgrade? [y/n]" )
8276 if ! continued {
@@ -86,10 +80,16 @@ func Upgrade(continueDirectly bool) error {
8680
8781 // 3. Download the latest release version of dtm
8882 log .Info ("Dtm upgrade: downloading the latest release version of dtm, please wait for a while." )
89- if err = ghClient .DownloadAsset (ltstReleaseTagName , assetName , dtmTmpFileName ); err != nil {
90- log .Debugf ("Failed to download dtm: %v-%v." , ltstReleaseTagName , assetName )
91- return err
83+ var downloadURL strings.Builder
84+ downloadURL .WriteString (dtmDownloadUrl )
85+ downloadURL .WriteString (latestReleaseTagName + "/" )
86+ downloadURL .WriteString (assetName )
87+ downloadSize , downloadError := downloader .New ().WithProgressBar ().Download (downloadURL .String (), dtmTmpFileName , workDir )
88+ if downloadError != nil {
89+ log .Debugf ("Failed to download dtm: %v-%v." , latestReleaseTagName , assetName )
90+ return downloadError
9291 }
92+ log .Debugf ("Downloaded <%d> bytes." , downloadSize )
9393
9494 // 4. Replace old dtm with the latest one
9595 if err = applyUpgrade (workDir ); err != nil {
0 commit comments