diff --git a/internal/comm/consts/lang.go b/internal/comm/consts/lang.go index 0a29fafa3ce1021759223b0212e9a2eb74ff2d7a..6fcc811dce6deaac8bfb812231f5fed479748afa 100644 --- a/internal/comm/consts/lang.go +++ b/internal/comm/consts/lang.go @@ -32,7 +32,8 @@ var ( "commentsTag": "//", "printGrammar": "console.log(\"#\")", "interpreter": "C:\\Program Files\\nodejs\\node.exe", - "versionCmd": "node -v", + "whereCmd": "where node", + "versionCmd": "%s -v", }, "lua": { "name": "Lua", @@ -40,7 +41,8 @@ var ( "commentsTag": "--", "printGrammar": "print('#')", "interpreter": "C:\\Program Files (x86)\\Lua\\5.1\\lua.exe", - "versionCmd": "lua -v", + "whereCmd": "where lua", + "versionCmd": "%s -v", }, "perl": { "name": "Perl", @@ -48,7 +50,8 @@ var ( "commentsTag": "#", "printGrammar": "print \"#\\n\";", "interpreter": "C:\\Perl64\\bin\\perl.exe", - "versionCmd": "perl -v", + "whereCmd": "where perl", + "versionCmd": "%s -v", }, "php": { "name": "PHP", @@ -56,7 +59,8 @@ var ( "commentsTag": "//", "printGrammar": "echo \"#\\n\";", "interpreter": "C:\\php-7.3.9-Win32-VC15-x64\\php.exe", - "versionCmd": "php -v", + "whereCmd": "where php", + "versionCmd": "%s -v", }, "python": { "name": "Python", @@ -64,7 +68,8 @@ var ( "commentsTag": "#", "printGrammar": "print(\"#\")", "interpreter": "C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python37-32\\python.exe", - "versionCmd": "python --version", + "whereCmd": "where python", + "versionCmd": "%s --version", }, "ruby": { "name": "Ruby", @@ -72,7 +77,8 @@ var ( "commentsTag": "#", "printGrammar": "print(\"#\\n\")", "interpreter": "C:\\Ruby26-x64\\bin\\ruby.exe", - "versionCmd": "ruby -v", + "whereCmd": "where ruby", + "versionCmd": "%s -v", }, "tcl": { "name": "TCL", @@ -80,7 +86,8 @@ var ( "commentsTag": "#", "printGrammar": "set hello \"#\"; \n puts [set hello];", "interpreter": "C:\\ActiveTcl\\bin\\tclsh.exe", - "versionCmd": "echo puts $tcl_version;exit 0 | tclsh", + "whereCmd": "where tclsh", + "versionCmd": "echo puts $tcl_version;exit 0 | %s", }, } diff --git a/internal/server/modules/v1/controller/interpreter.go b/internal/server/modules/v1/controller/interpreter.go index c3df2bd7e42e8207460ec7fa68b91618503469d0..9f0fe2160ccdcaa103a18000f7f82a12ff72046a 100644 --- a/internal/server/modules/v1/controller/interpreter.go +++ b/internal/server/modules/v1/controller/interpreter.go @@ -26,6 +26,18 @@ func (c *InterpreterCtrl) GetLangSettings(ctx iris.Context) { ctx.JSON(c.SuccessResp(data)) } +func (c *InterpreterCtrl) GetLangInterpreter(ctx iris.Context) { + language := ctx.URLParam("language") + + data, err := c.InterpreterService.GetLangInterpreter(language) + if err != nil { + ctx.JSON(c.ErrResp(commConsts.CommErr, err.Error())) + return + } + + ctx.JSON(c.SuccessResp(data)) +} + func (c *InterpreterCtrl) List(ctx iris.Context) { data, err := c.InterpreterService.List() if err != nil { diff --git a/internal/server/modules/v1/index/interpreter.go b/internal/server/modules/v1/index/interpreter.go index af38800571d6f6419997edd607b112d15220b1bc..2bd3ff5bff4cd3ee3c09f043340e4971f62367ef 100644 --- a/internal/server/modules/v1/index/interpreter.go +++ b/internal/server/modules/v1/index/interpreter.go @@ -27,6 +27,7 @@ func (m *InterpreterModule) Party() module.WebModule { index.Delete("/{id:int}", m.InterpreterCtrl.Delete).Name = "删除" index.Get("/getLangSettings", m.InterpreterCtrl.GetLangSettings).Name = "获取语言配置项" + index.Get("/getLangInterpreter", m.InterpreterCtrl.GetLangInterpreter).Name = "获取语言运行环境" } return module.NewModule("/interpreters", handler) diff --git a/internal/server/modules/v1/service/interpreter.go b/internal/server/modules/v1/service/interpreter.go index c91edf2691b449dd450f2f062f4c25e25b33b9c0..77a8814d884f67cb455cb4ce3b8fdb99310d043f 100644 --- a/internal/server/modules/v1/service/interpreter.go +++ b/internal/server/modules/v1/service/interpreter.go @@ -6,8 +6,10 @@ import ( commConsts "github.com/aaronchen2k/deeptest/internal/comm/consts" langHelper "github.com/aaronchen2k/deeptest/internal/comm/helper/lang" fileUtils "github.com/aaronchen2k/deeptest/internal/pkg/lib/file" + shellUtils "github.com/aaronchen2k/deeptest/internal/pkg/lib/shell" "github.com/aaronchen2k/deeptest/internal/server/modules/v1/model" "github.com/aaronchen2k/deeptest/internal/server/modules/v1/repo" + "strings" ) type InterpreterService struct { @@ -70,3 +72,34 @@ func (s *InterpreterService) GetLangSettings() (mp map[string]interface{}, err e return } + +func (s *InterpreterService) GetLangInterpreter(language string) (mp map[string]interface{}, err error) { + langSettings := commConsts.LangMap[language] + whereCmd := strings.TrimSpace(langSettings["whereCmd"]) + versionCmd := strings.TrimSpace(langSettings["versionCmd"]) + + path := langSettings["interpreter"] + info := "" + + if whereCmd == "" { + return + } + + output, err := shellUtils.ExeSysCmd(whereCmd) + if err != nil { + return + } + + path = output + + info, err = shellUtils.ExeSysCmd(fmt.Sprintf(versionCmd, path)) + if err != nil { + return + } + + mp = map[string]interface{}{} + mp["path"] = path + mp["info"] = info + + return +} diff --git a/ui/src/assets/css/custom.less b/ui/src/assets/css/custom.less index aceda7f82f80a21e6988d9c4b0c4213fc2cbb2d2..5b8e5ca831fa1608ce72b887a870745962424ced 100644 --- a/ui/src/assets/css/custom.less +++ b/ui/src/assets/css/custom.less @@ -6,6 +6,9 @@ .t-hidden { display: none !important; } +.t-italic { + font-style:italic; +} .t-link-blue { cursor: pointer; color: #1890ff; diff --git a/ui/src/utils/testing.ts b/ui/src/utils/testing.ts index 1c6819f6c9a56f57751d2ca38cf8eddd5ef66d49..4d6f32055919335d3ed211e7fc00415d561a30ce 100644 --- a/ui/src/utils/testing.ts +++ b/ui/src/utils/testing.ts @@ -2,26 +2,6 @@ import moment from "moment"; import {AutoTestTools, ScriptLanguages, TestTools, BuildTools} from "@/utils/const"; import request from "@/utils/request"; -export async function getInterpreters() { - const json: any = await request({ - url: '/interpreters/getLangSettings', - method: 'GET', - }) - - if (json.code === 0) { - const data = json.data - return data - } - - // ScriptLanguages.forEach(name => { - // const key = name.toLowerCase() - // languages.push(key) - // languageMap[key] = {name: name, path: path} - // }) - - return {languages: [], languageMap: {}} -} - export function getUnitTestFrameworks(): any { const list = new Array() const map = {} diff --git a/ui/src/views/interpreter/component/edit.vue b/ui/src/views/interpreter/component/edit.vue index 4c46609190be9f4e1bf20bf965da03b8447d2b17..86221d335085fb5c9b0eccda1ed6ad002cbd9612 100644 --- a/ui/src/views/interpreter/component/edit.vue +++ b/ui/src/views/interpreter/component/edit.vue @@ -1,7 +1,7 @@