diff --git a/core/function.go b/core/function.go index 726df7a..c5dc639 100644 --- a/core/function.go +++ b/core/function.go @@ -19,6 +19,7 @@ type Function struct { FindAll bool Admin bool Handle func(s im.Sender) interface{} + Regex bool } var pname = regexp.MustCompile(`/([^/\s]+)`).FindStringSubmatch(os.Args[0])[1] @@ -108,8 +109,20 @@ func initToHandleMessage() { }() } -func AddCommand(cmd []Function) { - functions = append(functions, cmd...) +func AddCommand(prefix string, cmds []Function) { + for _, cmd := range cmds { + if !cmd.Regex { + for i := range cmd.Rules { + if prefix != "" { + cmd.Rules[i] += prefix + `\s+` + cmd.Rules[i] + } + cmd.Rules[i] = strings.Replace(cmd.Rules[i], " ", `\s+`, -1) + cmd.Rules[i] = strings.Replace(cmd.Rules[i], "?", `(\S+)`, -1) + cmd.Rules[i] += "^" + cmd.Rules[i] + "$" + } + } + functions = append(functions, cmd) + } } func handleMessage(sender im.Sender) { diff --git a/develop/jd_asset/asset.go b/develop/jd_asset/asset.go index fb41867..3b15e2f 100644 --- a/develop/jd_asset/asset.go +++ b/develop/jd_asset/asset.go @@ -31,9 +31,9 @@ type JdCookie struct { var ua = `Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 UCBrowser/13.4.2.1122` func init() { - core.AddCommand([]core.Function{ + core.AddCommand("ql", []core.Function{ { - Rules: []string{`^asset\s+(.+)$`, `^查询\s+(.+)$`}, + Rules: []string{`jd asset ?`}, Handle: func(s im.Sender) interface{} { a := s.Get() envs, err := qinglong.GetEnvs("JD_COOKIE") diff --git a/develop/jd_cookie/cookie.go b/develop/jd_cookie/cookie.go deleted file mode 100644 index 1df23a3..0000000 --- a/develop/jd_cookie/cookie.go +++ /dev/null @@ -1,5 +0,0 @@ -package jdcookie - -func init() { - -} diff --git a/develop/jd_help/help.go b/develop/jd_help/help.go index 4311cbf..4b7494f 100644 --- a/develop/jd_help/help.go +++ b/develop/jd_help/help.go @@ -101,7 +101,6 @@ func init() { Value: f[i], }) } - return } } diff --git a/develop/qinglong/cron.go b/develop/qinglong/cron.go index f923332..01715f6 100644 --- a/develop/qinglong/cron.go +++ b/develop/qinglong/cron.go @@ -29,9 +29,10 @@ type Cron struct { } func init() { - core.AddCommand([]core.Function{ + core.AddCommand("ql", []core.Function{ { - Rules: []string{`^crons$`}, + Rules: []string{`crons`}, + Admin: true, Handle: func(_ im.Sender) interface{} { crons, err := GetCrons("") if err != nil { @@ -48,7 +49,8 @@ func init() { }, }, { - Rules: []string{`^cron\s+get\s+([\S]+)$`}, + Rules: []string{`cron get ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { name := s.Get() crons, err := GetCrons("") @@ -68,7 +70,8 @@ func init() { }, }, { - Rules: []string{`^cron\s+find\s+([\S]+)$`}, + Rules: []string{`cron find ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { name := s.Get() crons, err := GetCrons("") @@ -88,7 +91,8 @@ func init() { }, }, { - Rules: []string{`^cron\s+logs\s+([\S]+)$`}, + Rules: []string{`cron logs ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { data, err := GetCronLog(s.Get()) if err != nil { diff --git a/develop/qinglong/env.go b/develop/qinglong/env.go index 2501766..6bfd2cb 100644 --- a/develop/qinglong/env.go +++ b/develop/qinglong/env.go @@ -24,9 +24,10 @@ type Env struct { } func init() { - core.AddCommand([]core.Function{ + core.AddCommand("ql", []core.Function{ { - Rules: []string{`^envs$`}, + Rules: []string{`envs`}, + Admin: true, Handle: func(_ im.Sender) interface{} { envs, err := GetEnvs("") if err != nil { @@ -43,7 +44,8 @@ func init() { }, }, { - Rules: []string{`^env\s+get\s+([\S]+)$`}, + Rules: []string{`env get ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { name := s.Get() envs, err := GetEnvs(name) @@ -63,7 +65,8 @@ func init() { }, }, { - Rules: []string{`^env\s+find\s+([\S]+)$`}, + Rules: []string{`env find ?)`}, + Admin: true, Handle: func(s im.Sender) interface{} { m := s.Get() envs, err := GetEnvs(m) @@ -81,7 +84,9 @@ func init() { }, }, { - Rules: []string{`^export\s+([^'"=]+)=['"]?([^=]+?)['"]?$`, `^env\s+set\s+([^'"=]+)=['"]?([^=]+?)['"]?$`}, + Rules: []string{`export ([^'"=]+)=['"]?([^=]+?)['"]?`}, + Regex: true, + Admin: true, Handle: func(s im.Sender) interface{} { e := &Env{ Name: s.Get(0), @@ -95,7 +100,8 @@ func init() { }, }, { - Rules: []string{`^env\s+del\s+([\S]+)$`}, + Rules: []string{`env del ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { if err := RemEnv(&Env{ID: s.Get()}); err != nil { return err @@ -104,7 +110,8 @@ func init() { }, }, { - Rules: []string{`^env\s+remark\s+([\S]+)\s+([\S]+)$`}, + Rules: []string{`env remark ? ?`}, + Admin: true, Handle: func(s im.Sender) interface{} { if err := ModEnv(&Env{ID: s.Get(0), Remarks: s.Get(1)}); err != nil { return err