71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
// SPDX-License-Identifier: EUPL-1.2
|
|
|
|
// service := core.New(core.WithService(setup.Register)).Service("setup")
|
|
package setup
|
|
|
|
import (
|
|
core "dappco.re/go/core"
|
|
)
|
|
|
|
// projectType := setup.Detect("/srv/repos/agent")
|
|
// if projectType == setup.TypeGo { setup.GenerateBuildConfig("/srv/repos/agent", setup.TypeGo) }
|
|
type ProjectType string
|
|
|
|
const (
|
|
TypeGo ProjectType = "go"
|
|
TypePHP ProjectType = "php"
|
|
TypeNode ProjectType = "node"
|
|
TypeWails ProjectType = "wails"
|
|
TypeUnknown ProjectType = "unknown"
|
|
)
|
|
|
|
// fs := (&core.Fs{}).NewUnrestricted()
|
|
var fs = (&core.Fs{}).NewUnrestricted()
|
|
|
|
// projectType := setup.Detect("./repo")
|
|
func Detect(path string) ProjectType {
|
|
base := absolutePath(path)
|
|
checks := []struct {
|
|
file string
|
|
projectType ProjectType
|
|
}{
|
|
{"wails.json", TypeWails},
|
|
{"go.mod", TypeGo},
|
|
{"composer.json", TypePHP},
|
|
{"package.json", TypeNode},
|
|
}
|
|
for _, candidate := range checks {
|
|
if fs.IsFile(core.JoinPath(base, candidate.file)) {
|
|
return candidate.projectType
|
|
}
|
|
}
|
|
return TypeUnknown
|
|
}
|
|
|
|
// types := setup.DetectAll("./repo")
|
|
func DetectAll(path string) []ProjectType {
|
|
base := absolutePath(path)
|
|
var projectTypes []ProjectType
|
|
checks := []struct {
|
|
file string
|
|
projectType ProjectType
|
|
}{
|
|
{"go.mod", TypeGo},
|
|
{"composer.json", TypePHP},
|
|
{"package.json", TypeNode},
|
|
{"wails.json", TypeWails},
|
|
}
|
|
for _, candidate := range checks {
|
|
if fs.IsFile(core.JoinPath(base, candidate.file)) {
|
|
projectTypes = append(projectTypes, candidate.projectType)
|
|
}
|
|
}
|
|
return projectTypes
|
|
}
|
|
|
|
func absolutePath(path string) string {
|
|
if path == "" {
|
|
return core.Env("DIR_CWD")
|
|
}
|
|
return core.Path(path)
|
|
}
|