-
Notifications
You must be signed in to change notification settings - Fork 3
🚀 Implement dynamic status messages from JSON file #2192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,58 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| package ei | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "encoding/json" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "fmt" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "log" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "math/rand" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "os" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "sync" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // StatusMessagesFile is a struct to hold the status messages | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| type StatusMessagesFile struct { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| StatusMessages []string `json:"status_messages"` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // StatusMessages is a list of status messages | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var StatusMessages []string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var statusMessagesMutex sync.RWMutex | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // LoadStatusMessages loads status messages from a JSON file | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| func LoadStatusMessages(filename string) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| file, err := os.Open(filename) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| log.Printf("Failed to open status messages file: %v", err) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| defer func() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if err := file.Close(); err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| log.Printf("Failed to close: %v", err) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| var messagesLoaded StatusMessagesFile | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| decoder := json.NewDecoder(file) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if err := decoder.Decode(&messagesLoaded); err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| log.Printf("Failed to decode status messages: %v", err) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+25
to
+38
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| log.Printf("Failed to open status messages file: %v", err) | |
| return | |
| } | |
| defer func() { | |
| if err := file.Close(); err != nil { | |
| log.Printf("Failed to close: %v", err) | |
| } | |
| }() | |
| var messagesLoaded StatusMessagesFile | |
| decoder := json.NewDecoder(file) | |
| if err := decoder.Decode(&messagesLoaded); err != nil { | |
| log.Printf("Failed to decode status messages: %v", err) | |
| return | |
| log.Fatalf("Failed to open status messages file %q: %v", filename, err) | |
| } | |
| defer func() { | |
| if err := file.Close(); err != nil { | |
| log.Printf("Failed to close status messages file %q: %v", filename, err) | |
| } | |
| }() | |
| var messagesLoaded StatusMessagesFile | |
| decoder := json.NewDecoder(file) | |
| if err := decoder.Decode(&messagesLoaded); err != nil { | |
| log.Fatalf("Failed to decode status messages from file %q: %v", filename, err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The import uses
math/rand(v1) while the rest of the codebase has migrated tomath/rand/v2. This is inconsistent with the pattern used in src/tasks/tasks.go (line 7), src/boost/boost.go (line 10), src/boost/boost_admin.go (line 9), src/boost/contract.go (line 7), and src/boost/roles.go (line 7), which all usemath/rand/v2.Using the v2 API is recommended for Go 1.22+ as it provides better random number generation and doesn't require manual seeding. Change the import to use
math/rand/v2for consistency with the rest of the codebase.