sylixos-uploader/detector/sylixos_prj.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
}