Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
e835964b
Z
zentaoatf
项目概览
易企天创
/
zentaoatf
12 个月 前同步成功
通知
11
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
3
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zentaoatf
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
3
Issue
3
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e835964b
编写于
3月 24, 2022
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
get interpreter info by lang
上级
97c0e46f
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
122 addition
and
37 deletion
+122
-37
internal/comm/consts/lang.go
internal/comm/consts/lang.go
+14
-7
internal/server/modules/v1/controller/interpreter.go
internal/server/modules/v1/controller/interpreter.go
+12
-0
internal/server/modules/v1/index/interpreter.go
internal/server/modules/v1/index/interpreter.go
+1
-0
internal/server/modules/v1/service/interpreter.go
internal/server/modules/v1/service/interpreter.go
+33
-0
ui/src/assets/css/custom.less
ui/src/assets/css/custom.less
+3
-0
ui/src/utils/testing.ts
ui/src/utils/testing.ts
+0
-20
ui/src/views/interpreter/component/edit.vue
ui/src/views/interpreter/component/edit.vue
+26
-7
ui/src/views/interpreter/index.vue
ui/src/views/interpreter/index.vue
+3
-3
ui/src/views/interpreter/service.ts
ui/src/views/interpreter/service.ts
+30
-0
未找到文件。
internal/comm/consts/lang.go
浏览文件 @
e835964b
...
...
@@ -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"
,
},
}
...
...
internal/server/modules/v1/controller/interpreter.go
浏览文件 @
e835964b
...
...
@@ -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
{
...
...
internal/server/modules/v1/index/interpreter.go
浏览文件 @
e835964b
...
...
@@ -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
)
...
...
internal/server/modules/v1/service/interpreter.go
浏览文件 @
e835964b
...
...
@@ -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
}
ui/src/assets/css/custom.less
浏览文件 @
e835964b
...
...
@@ -6,6 +6,9 @@
.t-hidden {
display: none !important;
}
.t-italic {
font-style:italic;
}
.t-link-blue {
cursor: pointer;
color: #1890ff;
...
...
ui/src/utils/testing.ts
浏览文件 @
e835964b
...
...
@@ -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
<
string
>
()
const
map
=
{}
...
...
ui/src/views/interpreter/component/edit.vue
浏览文件 @
e835964b
<
template
>
<a-form
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
>
<a-form-item
:label=
"t('script_lang')"
v-bind=
"validateInfos.lang"
>
<a-select
v-model:value=
"modelRef.lang"
>
<a-select
v-model:value=
"modelRef.lang"
@
change=
"selectLang"
>
<a-select-option
key=
""
value=
""
>
</a-select-option>
<a-select-option
v-for=
"item in languages"
:key=
"item"
:value=
"item"
>
{{
languageMap
[
item
].
name
}}
</a-select-option>
</a-select>
...
...
@@ -19,7 +19,17 @@
<a-input
v-if=
"!isElectron"
v-model:value=
"modelRef.path"
spellcheck=
"false"
@
blur=
"validate('path', { trigger: 'blur' }).catch(() => {})"
/>
<span
v-if=
"interpreterPath"
>
例如:{{interpreterPath}}
</span>
<div
v-if=
"languageSettings?.path"
class=
"t-italic"
>
<div>
当前{{modelRef.lang}}运行环境:
</div>
<div>
路径{{languageSettings.path}}
</div>
<div>
信息{{languageSettings.info}}
</div>
</div>
<div
v-if=
"!languageSettings?.path && interpreterPath"
class=
"t-italic"
>
<div>
{{languageMap[modelRef.lang]?.name}}可执行文件的路径类似:
</div>
<div>
{{interpreterPath}}
</div>
</div>
</a-form-item>
<a-form-item
:wrapper-col=
"{ span: wrapperCol.span, offset: labelCol.span }"
>
...
...
@@ -36,8 +46,8 @@ import {useI18n} from "vue-i18n";
import
{
validateInfos
}
from
'
ant-design-vue/lib/form/useForm
'
;
import
{
Form
}
from
'
ant-design-vue
'
;
import
{
saveInterpreter
}
from
"
@/views/interpreter/service
"
;
import
{
get
Interpreters
}
from
"
@/utils/testing
"
;
import
{
getLangInterpreter
,
saveInterpreter
}
from
"
@/views/interpreter/service
"
;
import
{
get
LangSettings
}
from
"
../service
"
;
const
useForm
=
Form
.
useForm
;
...
...
@@ -45,6 +55,7 @@ interface EditInterpreterFormSetupData {
t
:
(
key
:
string
|
number
)
=>
string
;
validate
:
any
validateInfos
:
validateInfos
;
selectLang
:
(
v
)
=>
void
selectDir
:
()
=>
void
save
:
()
=>
Promise
<
void
>
;
reset
:
()
=>
Promise
<
void
>
;
...
...
@@ -53,6 +64,7 @@ interface EditInterpreterFormSetupData {
modelRef
:
Ref
;
languages
:
Ref
<
[]
>
,
languageMap
:
Ref
,
languageSettings
:
Ref
isElectron
:
Ref
<
boolean
>
;
labelCol
:
any
...
...
@@ -77,11 +89,12 @@ export default defineComponent({
const
{
t
}
=
useI18n
();
const
isElectron
=
ref
(
!!
window
.
require
)
let
languages
=
ref
<
any
>
({})
let
languageMap
=
ref
<
any
>
({})
const
languages
=
ref
<
any
>
({})
const
languageMap
=
ref
<
any
>
({})
const
languageSettings
=
ref
({})
const
getInterpretersA
=
async
()
=>
{
const
data
=
await
get
Interpreter
s
()
const
data
=
await
get
LangSetting
s
()
languages
.
value
=
data
.
languages
languageMap
.
value
=
data
.
languageMap
}
...
...
@@ -104,6 +117,10 @@ export default defineComponent({
const
{
resetFields
,
validate
,
validateInfos
}
=
useForm
(
modelRef
,
rulesRef
);
const
selectLang
=
async
(
item
)
=>
{
console
.
log
(
'
selectLang
'
,
item
)
languageSettings
.
value
=
await
getLangInterpreter
(
item
)
}
const
selectDir
=
()
=>
{
console
.
log
(
'
selectDir
'
)
...
...
@@ -145,12 +162,14 @@ export default defineComponent({
validate
,
validateInfos
,
modelRef
,
selectLang
,
selectDir
,
save
,
reset
,
languages
,
languageMap
,
languageSettings
,
labelCol
:
{
span
:
6
},
wrapperCol
:
{
span
:
18
},
}
...
...
ui/src/views/interpreter/index.vue
浏览文件 @
e835964b
...
...
@@ -43,7 +43,7 @@
v-if=
"formVisible"
:visible=
"true"
:onCancel=
"onCancel"
width=
"
6
00px"
width=
"
8
00px"
:destroy-on-close=
"true"
:mask-closable=
"false"
>
...
...
@@ -65,7 +65,7 @@ import {message, Empty} from 'ant-design-vue';
import
EditInterpreterForm
from
'
./component/edit.vue
'
;
import
{
get
Interpreters
}
from
"
@/utils/testing
"
;
import
{
get
LangSettings
}
from
"
./service
"
;
import
{
listInterpreter
,
removeInterpreter
}
from
"
@/views/interpreter/service
"
;
import
{
momentUtcDef
}
from
"
@/utils/datetime
"
;
...
...
@@ -102,7 +102,7 @@ export default defineComponent({
let
languageMap
=
ref
<
any
>
({})
const
getInterpretersA
=
async
()
=>
{
const
data
=
await
get
Interpreter
s
()
const
data
=
await
get
LangSetting
s
()
languageMap
.
value
=
data
.
languageMap
}
getInterpretersA
()
...
...
ui/src/views/interpreter/service.ts
浏览文件 @
e835964b
...
...
@@ -3,6 +3,36 @@ import request from "@/utils/request";
const
apiPath
=
'
interpreters
'
;
export
async
function
getLangSettings
()
{
const
json
:
any
=
await
request
({
url
:
'
/interpreters/getLangSettings
'
,
method
:
'
GET
'
,
})
if
(
json
.
code
===
0
)
{
const
data
=
json
.
data
return
data
}
return
{
languages
:
[],
languageMap
:
{}}
}
export
async
function
getLangInterpreter
(
lang
)
{
const
params
=
{
language
:
lang
}
const
json
:
any
=
await
request
({
url
:
'
/interpreters/getLangInterpreter
'
,
method
:
'
GET
'
,
params
,
})
if
(
json
.
code
===
0
)
{
const
data
=
json
.
data
return
data
}
return
{
path
:
''
,
info
:
''
}
}
export
async
function
listInterpreter
(
params
?:
QueryParams
):
Promise
<
any
>
{
return
request
({
url
:
`/
${
apiPath
}
`
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录