mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-02 20:00:26 +08:00
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||
|
||
package clusterutils
|
||
|
||
import (
|
||
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
|
||
"github.com/iwind/TeaGo/Tea"
|
||
"path/filepath"
|
||
"regexp"
|
||
"sort"
|
||
"strings"
|
||
)
|
||
|
||
type installerFile struct {
|
||
Name string `json:"name"`
|
||
OS string `json:"os"`
|
||
Arch string `json:"arch"`
|
||
Version string `json:"version"`
|
||
}
|
||
|
||
func ListInstallerFiles() []*installerFile {
|
||
var dir = Tea.Root + "/edge-api/deploy"
|
||
matches, err := filepath.Glob(dir + "/edge-node-*.zip")
|
||
if err != nil {
|
||
return nil
|
||
}
|
||
|
||
var result = []*installerFile{}
|
||
var reg = regexp.MustCompile(`^edge-node-(\w+)-(\w+)-v([\w.]+)\.zip$`)
|
||
for _, match := range matches {
|
||
var baseName = filepath.Base(match)
|
||
var subMatches = reg.FindStringSubmatch(baseName)
|
||
if len(subMatches) >= 4 {
|
||
var osName = subMatches[1]
|
||
if len(osName) > 0 {
|
||
osName = strings.ToUpper(osName[:1]) + osName[1:]
|
||
}
|
||
|
||
var arch = subMatches[2]
|
||
if arch == "amd64" {
|
||
arch = "x86_64"
|
||
}
|
||
|
||
var version = subMatches[3]
|
||
if version != teaconst.Version { // 只能下载当前版本
|
||
continue
|
||
}
|
||
|
||
result = append(result, &installerFile{
|
||
Name: subMatches[0],
|
||
OS: osName,
|
||
Arch: arch,
|
||
Version: version,
|
||
})
|
||
}
|
||
}
|
||
|
||
// 排序,将x86_64排在最上面
|
||
if len(result) > 0 {
|
||
sort.Slice(result, func(i, j int) bool {
|
||
return result[i].Arch == "x86_64"
|
||
})
|
||
}
|
||
|
||
return result
|
||
}
|