Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FLIPPED-AURORA
gin-vue-admin
提交
2bca2e31
G
gin-vue-admin
项目概览
FLIPPED-AURORA
/
gin-vue-admin
大约 1 年 前同步成功
通知
332
Star
18154
Fork
5505
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2bca2e31
编写于
11月 16, 2020
作者:
S
songzhibin97
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
热更新
修改bug 优化增加回显
上级
65118ef9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
63 addition
and
34 deletion
+63
-34
server/utils/cmd_Task.go
server/utils/cmd_Task.go
+32
-12
server/utils/cmd_monitor.go
server/utils/cmd_monitor.go
+31
-22
未找到文件。
server/utils/cmd_Task.go
浏览文件 @
2bca2e31
package
utils
import
(
"bytes"
"fmt"
"io"
"os"
"os/exec"
"path/filepath"
...
...
@@ -85,7 +87,7 @@ func (t *T) DefaultF(ch chan struct{}) error {
// 判断是否有makefile
_
,
err
:=
os
.
Stat
(
filepath
.
Join
(
"Makefile"
))
if
runtime
.
GOOS
!=
"windows"
&&
err
!
=
nil
{
if
runtime
.
GOOS
!=
"windows"
&&
err
=
=
nil
{
_
,
err
:=
exec
.
LookPath
(
"make"
)
if
err
==
nil
{
cmd
=
exec
.
Command
(
"makefile"
)
...
...
@@ -105,12 +107,12 @@ func (t *T) DefaultF(ch chan struct{}) error {
default
:
buildCmd
=
exec
.
Command
(
"go"
,
"build"
,
"-o"
,
"gva"
,
"main.go"
)
}
err
=
buildCmd
.
Run
()
fmt
.
Println
(
"build 执行完成"
)
if
err
!=
nil
{
return
err
}
fmt
.
Println
(
"build 执行完成"
)
// 执行
switch
runtime
.
GOOS
{
...
...
@@ -121,15 +123,7 @@ func (t *T) DefaultF(ch chan struct{}) error {
}
makefile
:
// 开始执行任务
err
=
cmd
.
Start
()
if
err
!=
nil
{
return
err
}
t
.
p
=
cmd
.
Process
fmt
.
Println
(
"pid"
,
t
.
p
.
Pid
)
go
func
()
{
err
=
cmd
.
Wait
()
}()
t
.
echo
(
cmd
)
<-
ch
// 回收资源
err
=
cmd
.
Process
.
Kill
()
...
...
@@ -138,3 +132,29 @@ makefile:
t
.
closeChan
<-
struct
{}{}
return
err
}
// echo: 封装回显
func
(
t
*
T
)
echo
(
cmd
*
exec
.
Cmd
)
error
{
var
stdoutBuf
bytes
.
Buffer
stdoutIn
,
_
:=
cmd
.
StdoutPipe
()
var
errStdout
,
errStderr
error
stdout
:=
io
.
MultiWriter
(
os
.
Stdout
,
&
stdoutBuf
)
err
:=
cmd
.
Start
()
if
err
!=
nil
{
return
err
}
go
func
()
{
_
,
errStdout
=
io
.
Copy
(
stdout
,
stdoutIn
)
}()
t
.
p
=
cmd
.
Process
fmt
.
Println
(
"pid"
,
t
.
p
.
Pid
)
go
func
()
{
_
=
cmd
.
Wait
()
if
errStdout
!=
nil
||
errStderr
!=
nil
{
fmt
.
Printf
(
"failed to capture stdout or stderr
\n
"
)
}
outStr
:=
string
(
stdoutBuf
.
Bytes
())
fmt
.
Printf
(
"
\n
out:
\n
%s
\n
"
,
outStr
)
}()
return
nil
}
server/utils/cmd_monitor.go
浏览文件 @
2bca2e31
...
...
@@ -55,33 +55,24 @@ func (w *Watch) Watch(path string, t *T) error {
c
<-
errors
.
New
(
"errors close"
)
return
}
// 判断时间
fmt
.
Println
(
"even"
,
even
)
// 判断事件
switch
{
// todo 待处理
case
even
.
Op
&
fsnotify
.
Create
==
fsnotify
.
Create
:
//这里获取新创建文件的信息,如果是目录,则加入监控中
fmt
.
Println
(
"创建文件 : "
,
even
.
Name
)
//t.AddTask()
_
=
w
.
Add
(
even
.
Name
)
w
.
addTask
(
t
,
even
.
Name
)
case
even
.
Op
&
fsnotify
.
Write
==
fsnotify
.
Write
:
fmt
.
Println
(
"修改 : "
,
even
.
Name
)
fmt
.
Println
(
filepath
.
Ext
(
even
.
Name
))
if
filepath
.
Ext
(
even
.
Name
)
==
".go"
{
fmt
.
Println
(
"send addtask:"
,
even
.
Name
)
t
.
AddTask
()
}
case
even
.
Op
&
fsnotify
.
Remove
==
fsnotify
.
Remove
:
fmt
.
Println
(
"删除 : "
,
even
.
Name
)
//t.AddTask()
_
=
w
.
Remove
(
even
.
Name
)
case
even
.
Op
&
fsnotify
.
Rename
==
fsnotify
.
Rename
:
fmt
.
Println
(
"重命名 : "
,
even
.
Name
)
//t.AddTask()
fmt
.
Println
(
"修改文件 : "
,
even
.
Name
)
w
.
addTask
(
t
,
even
.
Name
)
case
even
.
Op
&
fsnotify
.
Remove
==
fsnotify
.
Remove
||
even
.
Op
&
fsnotify
.
Rename
==
fsnotify
.
Rename
:
fmt
.
Println
(
"删除或重命名文件 : "
,
even
.
Name
)
_
=
w
.
Remove
(
even
.
Name
)
w
.
addTask
(
t
,
even
.
Name
)
}
case
err
=
<-
w
.
Errors
:
fmt
.
Println
(
"
79
"
,
err
)
fmt
.
Println
(
"
even Error:
"
,
err
)
c
<-
err
return
}
...
...
@@ -106,10 +97,12 @@ func (w *Watch) watchDir(path string) error {
for
_
,
f
:=
range
fileSlice
{
fPath
:=
filepath
.
Join
(
path
,
f
.
Name
())
if
!
f
.
IsDir
()
{
// todo 这里加一些条件筛选添加监控的内容
err
=
w
.
watchFile
(
fPath
)
if
err
!=
nil
{
return
err
// 判断是否可监控的文件
if
chickPower
(
fPath
)
{
err
=
w
.
watchFile
(
fPath
)
if
err
!=
nil
{
return
err
}
}
}
else
{
err
:=
w
.
watchDir
(
fPath
)
...
...
@@ -123,5 +116,21 @@ func (w *Watch) watchDir(path string) error {
// watchDir: 处理监控单文件
func
(
w
*
Watch
)
watchFile
(
path
string
)
error
{
return
w
.
Add
(
path
)
var
err
error
if
chickPower
(
path
)
{
err
=
w
.
Add
(
path
)
}
return
err
}
// chickPower: 判断是否在可控范围内
func
chickPower
(
name
string
)
bool
{
return
filepath
.
Ext
(
name
)
==
".go"
||
filepath
.
Ext
(
name
)
==
".yaml"
}
// addTask: 偏函数 简化发送任务
func
(
w
*
Watch
)
addTask
(
t
*
T
,
name
string
)
{
if
chickPower
(
name
)
{
t
.
AddTask
()
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录