task.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package qinglong
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "github.com/cdle/sillyGirl/core"
  7. )
  8. func init() {
  9. core.AddCommand("ql", []core.Function{
  10. {
  11. Rules: []string{`\r\a\w ?`},
  12. Admin: true,
  13. Handle: func(s core.Sender) interface{} {
  14. cron := &Carrier{
  15. Get: "data._id",
  16. }
  17. if err := Config.Req(cron, CRONS, POST, []byte(`{"name":"sillyGirl临时创建任务","command":"ql raw `+s.Get()+`","schedule":" 1 1 1 1 1"}`)); err != nil {
  18. return err
  19. }
  20. if err := Config.Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.Value))); err != nil {
  21. return err
  22. }
  23. for {
  24. time.Sleep(time.Microsecond * 300)
  25. data, _ := GetCronLog(cron.Value)
  26. if strings.Contains(data, "执行结束...") {
  27. s.Reply(data)
  28. break
  29. }
  30. }
  31. if err := Config.Req(CRONS, DELETE, []byte(`["`+cron.Value+`"]`)); err != nil {
  32. return err
  33. }
  34. return nil
  35. },
  36. },
  37. {
  38. Rules: []string{`task ?`},
  39. Admin: true,
  40. Handle: func(s core.Sender) interface{} {
  41. cron := &Carrier{
  42. Get: "data._id",
  43. }
  44. if err := Config.Req(cron, CRONS, POST, []byte(`{"name":"sillyGirl临时创建任务","command":"task `+s.Get()+`","schedule":" 1 1 1 1 1"}`)); err != nil {
  45. return err
  46. }
  47. if err := Config.Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.Value))); err != nil {
  48. return err
  49. }
  50. for {
  51. time.Sleep(time.Second)
  52. data, _ := GetCronLog(cron.Value)
  53. if strings.Contains(data, "执行结束...") {
  54. s.Reply(data)
  55. break
  56. }
  57. }
  58. if err := Config.Req(cron, CRONS, DELETE, []byte(`["`+cron.Value+`"]`)); err != nil {
  59. return err
  60. }
  61. return nil
  62. },
  63. },
  64. {
  65. Rules: []string{`repo ?`},
  66. Admin: true,
  67. Handle: func(s core.Sender) interface{} {
  68. cron := &Carrier{
  69. Get: "data._id",
  70. }
  71. if err := Config.Req(cron, CRONS, POST, []byte(`{"name":"sillyGirl临时创建任务","command":"ql repo `+s.Get()+`","schedule":" 1 1 1 1 1"}`)); err != nil {
  72. return err
  73. }
  74. if err := Config.Req(CRONS, PUT, "/run", []byte(fmt.Sprintf(`["%s"]`, cron.Value))); err != nil {
  75. return err
  76. }
  77. for {
  78. time.Sleep(time.Second)
  79. data, _ := GetCronLog(cron.Value)
  80. if strings.Contains(data, "执行结束...") {
  81. s.Reply(data)
  82. break
  83. }
  84. }
  85. if err := Config.Req(cron, CRONS, DELETE, []byte(`["`+cron.Value+`"]`)); err != nil {
  86. return err
  87. }
  88. return nil
  89. },
  90. },
  91. })
  92. }