71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package detector
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"sylixos-uploader/common"
|
|
)
|
|
|
|
type SylixOSPrj struct {
|
|
Path string
|
|
IsPrj bool
|
|
HasUploadToml bool
|
|
HasUploadYml bool
|
|
PrjType string
|
|
}
|
|
|
|
func NewSylixOSPrj(dirPath string) *SylixOSPrj {
|
|
return &SylixOSPrj{
|
|
Path: dirPath,
|
|
IsPrj: false,
|
|
PrjType: "",
|
|
HasUploadYml: false,
|
|
}
|
|
}
|
|
|
|
func (s *SylixOSPrj) IsSylixOSPrj() bool {
|
|
// 检查是否存在上传的 TOML 或 YML 文件,并设置相关标志
|
|
if hasUploadToml(s.Path) {
|
|
s.HasUploadToml = true
|
|
s.IsPrj = true
|
|
}
|
|
if hasUploadYml(s.Path) {
|
|
s.HasUploadYml = true
|
|
s.IsPrj = true
|
|
}
|
|
// 检查是否存在 reproject 文件,若存在则认为是 SylixOS 项目
|
|
if hasReproject(s.Path) {
|
|
s.IsPrj = true
|
|
return true
|
|
}
|
|
|
|
return s.IsPrj // 如果没有找到 reproject 文件,根据已有标志返回
|
|
}
|
|
|
|
func hasUploadToml(dirPath string) bool {
|
|
osStat, err := os.Stat(filepath.Join(dirPath, common.TOMLFile))
|
|
if err == nil && !osStat.IsDir() {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func hasUploadYml(dirPath string) bool {
|
|
osStat, err := os.Stat(filepath.Join(dirPath, common.YamlFile))
|
|
if err == nil && !osStat.IsDir() {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func hasReproject(dirPath string) bool {
|
|
reprojectPath := filepath.Join(dirPath, common.ReprojectFile)
|
|
osStat, err := os.Lstat(reprojectPath)
|
|
if err == nil && !osStat.IsDir() {
|
|
return true
|
|
}
|
|
return false
|
|
}
|