()
| 21 | ) |
| 22 | |
| 23 | func GetUpgradeVersionInfo() (*dto.UpgradeInfo, error) { |
| 24 | var upgrade dto.UpgradeInfo |
| 25 | var currentVersion model.Setting |
| 26 | if err := global.CoreDB.Model(&model.Setting{}).Where("key = ?", "SystemVersion").First(¤tVersion).Error; err != nil { |
| 27 | global.LOG.Errorf("load %s from db setting failed, err: %v", "SystemVersion", err) |
| 28 | return nil, err |
| 29 | } |
| 30 | var developerMode model.Setting |
| 31 | if err := global.CoreDB.Model(&model.Setting{}).Where("key = ?", "DeveloperMode").First(&developerMode).Error; err != nil { |
| 32 | global.LOG.Errorf("load %s from db setting failed, err: %v", "DeveloperMode", err) |
| 33 | return nil, err |
| 34 | } |
| 35 | |
| 36 | upgrade.TestVersion, upgrade.NewVersion, upgrade.LatestVersion = loadVersionByMode(developerMode.Value, currentVersion.Value) |
| 37 | var itemVersion string |
| 38 | if len(upgrade.NewVersion) != 0 { |
| 39 | itemVersion = upgrade.NewVersion |
| 40 | } |
| 41 | if (global.CONF.Base.Mode == "dev" || developerMode.Value == constant.StatusEnable) && len(upgrade.TestVersion) != 0 { |
| 42 | itemVersion = upgrade.TestVersion |
| 43 | } |
| 44 | if len(upgrade.LatestVersion) != 0 { |
| 45 | itemVersion = upgrade.LatestVersion |
| 46 | } |
| 47 | if len(itemVersion) == 0 { |
| 48 | return &upgrade, nil |
| 49 | } |
| 50 | mode := global.CONF.Base.Mode |
| 51 | if strings.Contains(itemVersion, "beta") { |
| 52 | mode = "beta" |
| 53 | } |
| 54 | notes, err := loadReleaseNotes(fmt.Sprintf("%s/%s/%s/release/1panel-%s-release-notes", global.RepoURL(), mode, itemVersion, itemVersion)) |
| 55 | if err != nil { |
| 56 | return nil, fmt.Errorf("load releases-notes of version %s failed, err: %v", itemVersion, err) |
| 57 | } |
| 58 | upgrade.ReleaseNote = notes |
| 59 | return &upgrade, nil |
| 60 | } |
| 61 | |
| 62 | func loadVersionByMode(developer, currentVersion string) (string, string, string) { |
| 63 | var current, latest string |
nothing calls this directly
no test coverage detected