This commit is contained in:
cdle
2021-09-17 06:41:26 +08:00
parent f41323d979
commit 0986d5baf0
4 changed files with 94 additions and 82 deletions
-29
View File
@@ -1,29 +0,0 @@
package core
import (
"os"
"os/exec"
"strings"
"github.com/astaxie/beego/logs"
)
func Daemon() {
args := os.Args[1:]
execArgs := make([]string, 0)
l := len(args)
for i := 0; i < l; i++ {
if strings.Index(args[i], "-d") == 0 {
continue
}
execArgs = append(execArgs, args[i])
}
proc := exec.Command(os.Args[0], execArgs...)
err := proc.Start()
if err != nil {
panic(err)
}
logs.Info("傻妞以静默形式运行")
os.Exit(0)
}
+1 -53
View File
@@ -2,9 +2,7 @@ package core
import (
"os"
"os/exec"
"regexp"
"runtime"
"strings"
"github.com/cdle/sillyGirl/im"
@@ -32,57 +30,7 @@ var name = func() string {
return sillyGirl.Get("name", "傻妞")
}
var functions = []Function{
{
Rules: []string{"^name$"},
Handle: func(_ im.Sender) interface{} {
return name()
},
},
{
Rules: []string{"^升级$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
if runtime.GOOS == "darwin" {
return "沙雕。"
}
s.Reply(name() + "开始拉取代码。")
rtn, err := exec.Command("sh", "-c", "cd "+ExecPath+" && git stash && git pull").Output()
if err != nil {
return name() + "拉取代失败:" + err.Error() + "。"
}
t := string(rtn)
if !strings.Contains(t, "changed") {
if strings.Contains(t, "Already") || strings.Contains(t, "已经是最新") {
return name() + "已是最新版啦。"
} else {
return name() + "拉取代失败:" + t + "。"
}
} else {
s.Reply(name() + "拉取代码成功。")
}
s.Reply(name() + "正在编译程序。")
rtn, err = exec.Command("sh", "-c", "cd "+ExecPath+" && go build -o "+pname).Output()
if err != nil {
return name() + "编译失败:" + err.Error()
} else {
s.Reply(name() + "编译成功。")
}
s.Reply(name() + "重启程序。")
Daemon()
return nil
},
},
{
Rules: []string{"^重启$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
s.Reply(name() + "重启程序。")
Daemon()
return nil
},
},
}
var functions = []Function{}
var Senders chan im.Sender
+57
View File
@@ -0,0 +1,57 @@
package core
import (
"errors"
"os"
"os/exec"
"runtime"
"strings"
"github.com/astaxie/beego/logs"
)
func Daemon() {
args := os.Args[1:]
execArgs := make([]string, 0)
l := len(args)
for i := 0; i < l; i++ {
if strings.Index(args[i], "-d") == 0 {
continue
}
execArgs = append(execArgs, args[i])
}
proc := exec.Command(os.Args[0], execArgs...)
err := proc.Start()
if err != nil {
panic(err)
}
logs.Info(sillyGirl.Get("name", "傻妞") + "以静默形式运行")
os.Exit(0)
}
func GitPull(filename string) (bool, error) {
if runtime.GOOS == "darwin" {
return false, errors.New("骂你一句沙雕。")
}
rtn, err := exec.Command("sh", "-c", "cd "+ExecPath+filename+" && git stash && git pull").Output()
if err != nil {
return false, errors.New("拉取代失败:" + err.Error() + "。")
}
t := string(rtn)
if !strings.Contains(t, "changed") {
if strings.Contains(t, "Already") || strings.Contains(t, "已经是最新") {
return false, nil
} else {
return false, errors.New("拉取代失败:" + t + "。")
}
}
return true, nil
}
func CompileCode() error {
_, err := exec.Command("sh", "-c", "cd "+ExecPath+" && go build -o "+pname).Output()
if err != nil {
return errors.New("编译失败:" + err.Error() + "。")
}
return nil
}
+36
View File
@@ -9,6 +9,42 @@ import (
func init() {
AddCommand("", []Function{
{
Rules: []string{"raw ^name$"},
Handle: func(_ im.Sender) interface{} {
return name()
},
},
{
Rules: []string{"raw ^升级$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
s.Reply(name() + "开始拉取代码。")
need, err := GitPull("")
if err != nil {
return err
}
if !need {
return name() + "已是最新版。"
}
s.Reply(name() + "开始拉取成功。")
s.Reply(name() + "正在编译程序。")
if err := CompileCode(); err != nil {
return err
}
s.Reply(name() + "编译程序完毕。")
Daemon()
return nil
},
},
{
Rules: []string{"raw ^重启$"},
Admin: true,
Handle: func(_ im.Sender) interface{} {
Daemon()
return nil
},
},
{
Rules: []string{"raw ^命令$"},
Handle: func(_ im.Sender) interface{} {