Files
crawlab/backend/utils/system.go
2020-04-19 16:56:07 +08:00

94 lines
2.5 KiB
Go

package utils
import (
"crawlab/entity"
"encoding/json"
"github.com/apex/log"
"io/ioutil"
"runtime/debug"
)
func GetLangList() []entity.Lang {
list := []entity.Lang{
{
Name: "Python",
ExecutableName: "python",
ExecutablePaths: []string{"/usr/bin/python", "/usr/local/bin/python"},
DepExecutablePath: "/usr/local/bin/pip",
LockPath: "/tmp/install-python.lock",
DepFileName: "requirements.txt",
InstallDepArgs: "install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt",
},
{
Name: "Node.js",
ExecutableName: "node",
ExecutablePaths: []string{"/usr/bin/node", "/usr/local/bin/node"},
DepExecutablePath: "/usr/local/bin/npm",
LockPath: "/tmp/install-nodejs.lock",
InstallScript: "install-nodejs.sh",
DepFileName: "package.json",
InstallDepArgs: "install -g --registry=https://registry.npm.taobao.org",
},
{
Name: "Java",
ExecutableName: "java",
ExecutablePaths: []string{"/usr/bin/java", "/usr/local/bin/java"},
LockPath: "/tmp/install-java.lock",
InstallScript: "install-java.sh",
},
{
Name: ".Net Core",
ExecutableName: "dotnet",
ExecutablePaths: []string{"/usr/bin/dotnet", "/usr/local/bin/dotnet"},
LockPath: "/tmp/install-dotnet.lock",
InstallScript: "install-dotnet.sh",
},
{
Name: "PHP",
ExecutableName: "php",
ExecutablePaths: []string{"/usr/bin/php", "/usr/local/bin/php"},
LockPath: "/tmp/install-php.lock",
InstallScript: "install-php.sh",
},
}
return list
}
// 获取语言列表
func GetLangListPlain() []entity.Lang {
list := GetLangList()
return list
}
// 根据语言名获取语言实例,不包含状态
func GetLangFromLangNamePlain(name string) entity.Lang {
langList := GetLangListPlain()
for _, lang := range langList {
if lang.ExecutableName == name {
return lang
}
}
return entity.Lang{}
}
func GetPackageJsonDeps(filepath string) (deps []string, err error) {
data, err := ioutil.ReadFile(filepath)
if err != nil {
log.Errorf("get package.json deps error: " + err.Error())
debug.PrintStack()
return deps, err
}
var packageJson entity.PackageJson
if err := json.Unmarshal(data, &packageJson); err != nil {
log.Errorf("get package.json deps error: " + err.Error())
debug.PrintStack()
return deps, err
}
for d, v := range packageJson.Dependencies {
deps = append(deps, d+"@"+v)
}
return deps, nil
}