@@ -3,6 +3,7 @@ package main
33import (
44 "fmt"
55 "github.com/go-vgo/robotgo"
6+ "math/rand"
67 "time"
78
89 //"github.com/go-vgo/robotgo"
@@ -11,70 +12,54 @@ import (
1112 "os"
1213)
1314
14- // type Config struct {
15- // Commands []struct {
16- // Type string `yaml:"type"`
17- // } `yaml:"commands"`
18- // }
1915type Config struct {
2016 Commands []struct {
21- Type string
22- X int
23- Y int
24- MinX int
25- MinY int
26- MaxX string
27- MaxY string
28- Button string
29- Duration int64
17+ Type * string
18+ X * int
19+ Y * int
20+ MinX * int `yaml:"minX"`
21+ MinY * int `yaml:"minY"`
22+ MaxX * int `yaml:"maxX"`
23+ MaxY * int `yaml:"maxY"`
24+ Button * string
25+ Duration * int64
3026 }
3127}
3228
33- //type Command struct {
34- // Type string
35- // X int
36- // Y int
37- // MinX int
38- // MinY int
39- // MaxX string
40- // MaxY string
41- // Button string
42- // Duration int
43- //}
44-
4529func main () {
46-
4730 file , err := os .Open ("script.yaml" )
4831 if err != nil {
4932 panic ("unable to open configuration file script.yaml" )
5033 }
51- x , err := io .ReadAll (file )
34+ rawConfig , err := io .ReadAll (file )
5235 if err != nil {
53- panic ("failed reading script.yaml" )
36+ panic (fmt . Errorf ( "failed reading script.yaml: %w" , err ) )
5437 }
5538
5639 var config Config
57- yaml .Unmarshal (x , & config )
58- for _ , command := range config .Commands {
59- fmt .Println (command )
60- switch command .Type {
61- case "move" :
62- robotgo .Move (command .X , command .Y )
63- case "click" :
64- robotgo .Click (command .Button )
65- case "sleep" :
66- fmt .Printf ("Sleeping for %d milliseconds." , command .Duration )
67- time .Sleep (time .Duration (command .Duration ) * time .Millisecond )
40+ err = yaml .Unmarshal (rawConfig , & config )
41+ if err != nil {
42+ panic (fmt .Errorf ("failed to parse script.yaml: %w" , err ))
43+ }
44+ for {
45+ for _ , command := range config .Commands {
46+ switch * command .Type {
47+ case "move" :
48+ if command .X != nil && command .Y != nil {
49+ robotgo .MoveSmooth (* command .X , * command .Y )
50+ } else if command .MinX != nil && command .MinY != nil && command .MaxX != nil && command .MaxY != nil {
51+ x := rand .Intn (* command .MaxX - * command .MinX ) + * command .MinX
52+ y := rand .Intn (* command .MaxY - * command .MinY ) + * command .MinY
53+ robotgo .MoveSmooth (x , y )
54+ } else {
55+ panic (fmt .Sprintf ("Invalid move configuration: %+v" , command ))
56+ }
57+ case "click" :
58+ robotgo .Click (command .Button )
59+ case "sleep" :
60+ fmt .Printf ("Sleeping for %d milliseconds." , command .Duration )
61+ time .Sleep (time .Duration (* command .Duration ) * time .Millisecond )
62+ }
6863 }
6964 }
70-
71- //if ok {
72- //
73- // for _, command := range commands {
74- // if a, ok := command.(map[string]any); ok {
75- // fmt.Println(a["type"])
76- // }
77- //
78- // }
79- //}
8065}
0 commit comments