serverwatcher 4.7.1__tar.gz → 4.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. {serverwatcher-4.7.1/src/serverwatcher.egg-info → serverwatcher-4.9}/PKG-INFO +1 -1
  2. {serverwatcher-4.7.1 → serverwatcher-4.9}/pyproject.toml +1 -1
  3. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/watcher.py +22 -28
  4. {serverwatcher-4.7.1 → serverwatcher-4.9/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  5. {serverwatcher-4.7.1 → serverwatcher-4.9}/LICENSE +0 -0
  6. {serverwatcher-4.7.1 → serverwatcher-4.9}/README.md +0 -0
  7. {serverwatcher-4.7.1 → serverwatcher-4.9}/setup.cfg +0 -0
  8. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/__init__.py +0 -0
  9. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/configclasses/__init__.py +0 -0
  10. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/configclasses/global_config.py +0 -0
  11. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/configclasses/messages.py +0 -0
  12. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/configclasses/watcher.py +0 -0
  13. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/defaultconfigs/global.yaml +0 -0
  14. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  15. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/defaultconfigs/watcher.yaml +0 -0
  16. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher/validator.py +0 -0
  17. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  18. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  19. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher.egg-info/requires.txt +0 -0
  20. {serverwatcher-4.7.1 → serverwatcher-4.9}/src/serverwatcher.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 4.7.1
3
+ Version: 4.9
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "serverwatcher"
10
- version = "4.7.1"
10
+ version = "4.9"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -25,7 +25,6 @@ validate_all()
25
25
  class ServerWatcher:
26
26
  def __init__(self):
27
27
 
28
- # load configs
29
28
  self.global_cfg = loadConfig(
30
29
  "config/global.yaml",
31
30
  "/defaultconfigs/global.yaml",
@@ -44,7 +43,6 @@ class ServerWatcher:
44
43
  WatcherConfig
45
44
  )
46
45
 
47
- # initialize panels and servers
48
46
  self.panel = Panel(
49
47
  name=self.global_cfg.panel_name,
50
48
  url=self.global_cfg.panel_url,
@@ -81,23 +79,27 @@ class ServerWatcher:
81
79
 
82
80
  self.tz = ZoneInfo(self.global_cfg.timezone)
83
81
 
84
- # utility
85
82
  def fmt(self, template: str, **kwargs):
86
83
  return template.format(prefix=self.messages.prefix, **kwargs)
87
84
 
85
+ def say(self, key, level="info", **fmt):
86
+ if not key:
87
+ return
88
+ text = self.fmt(key, **fmt)
89
+ getattr(self.log, level)(text)
90
+
88
91
  def shutdown(self):
89
- self.log.info(self.messages.log_shutdown)
92
+ self.say(self.messages.log_shutdown)
90
93
  raise SystemExit
91
94
 
92
- # restart logic
93
95
  def restart_and_wait(self):
94
96
  if self.cfg.schedule_control:
95
97
  self.origin.disableSchedule(self.cfg.restart_soon_id)
96
98
  self.server.restart()
97
- self.log.info(self.messages.restart_action_sent)
99
+ self.say(self.messages.restart_action_sent)
98
100
  time.sleep(self.cfg.restart_wait_seconds)
99
101
 
100
- self.log.warn(self.messages.log_status_check)
102
+ self.say(self.messages.log_status_check, level="warn")
101
103
  alive = waitForOnline(
102
104
  self.server,
103
105
  timeout=self.cfg.restart_online_timeout,
@@ -105,12 +107,11 @@ class ServerWatcher:
105
107
  )
106
108
 
107
109
  if alive:
108
- self.log.info(self.messages.server_back_online)
109
- self.log.info(self.fmt(self.messages.server_back_online_broadcast), destination=True, origin=False, logs=False)
110
+ self.say(self.messages.server_back_online)
111
+ self.say(self.messages.server_back_online_broadcast)
110
112
  else:
111
- self.log.error(self.messages.server_failed_restart)
113
+ self.say(self.messages.server_failed_restart, level="error")
112
114
 
113
- # scheduled restart
114
115
  def schedule_restart(self, minutes):
115
116
  info = snapSchedule(minimumMinutes=minutes)
116
117
  scheduled = info["scheduled"]
@@ -120,7 +121,6 @@ class ServerWatcher:
120
121
 
121
122
  self.server.sendBroadcast(self.fmt(self.messages.broadcast_restart_at, time=time_str))
122
123
 
123
- # minute_* callbacks
124
124
  minute_callbacks = {
125
125
  int(k.split("_")[1]): (
126
126
  lambda msg=self.fmt(getattr(self.messages, k)):
@@ -130,7 +130,6 @@ class ServerWatcher:
130
130
  if k.startswith("minute_")
131
131
  }
132
132
 
133
- # second_* callbacks
134
133
  second_callbacks = {
135
134
  int(k.split("_")[1]): (
136
135
  lambda msg=self.fmt(getattr(self.messages, k)):
@@ -146,12 +145,11 @@ class ServerWatcher:
146
145
  second_callbacks=second_callbacks,
147
146
  )
148
147
 
149
- # evaluation logic
150
148
  def evaluate(self):
151
- self.log.info(self.messages.log_start)
149
+ self.say(self.messages.log_start)
152
150
 
153
151
  if not validateAll(self.panel, self.server):
154
- self.log.error(self.messages.log_validation_fail)
152
+ self.say(self.messages.log_validation_fail, level="error")
155
153
  self.shutdown()
156
154
 
157
155
  self.server.refresh()
@@ -162,7 +160,6 @@ class ServerWatcher:
162
160
  restart_reasons = []
163
161
  no_restart_reasons = []
164
162
 
165
- # pro-restart
166
163
  if self.cfg.schedule_control and self.server.getSchedule(self.cfg.restart_soon_id)["is_active"]:
167
164
  restart_reasons.append(self.messages.reason_restart_soon)
168
165
  pro += self.cfg.weight_restart_soon
@@ -186,7 +183,6 @@ class ServerWatcher:
186
183
  restart_reasons.append(self.fmt(self.messages.reason_tps, tps=snap.tps, threshold=self.cfg.tps_threshold))
187
184
  pro += self.cfg.weight_tps
188
185
 
189
- # anti-restart
190
186
  if snap.uptime // 60 < 30:
191
187
  no_restart_reasons.append(self.fmt(self.messages.reason_low_uptime, uptime=snap.uptime_formatted))
192
188
  anti += self.cfg.weight_low_uptime
@@ -197,15 +193,14 @@ class ServerWatcher:
197
193
  no_restart_reasons.append(self.fmt(self.messages.reason_players, verb=verb, count=snap.players, plural=plural))
198
194
  anti += snap.players * self.cfg.weight_per_player
199
195
 
200
- # logging
201
196
  if restart_reasons:
202
- self.log.warn(f"{self.messages.pro_restart_splash}")
197
+ self.say(self.messages.pro_restart_splash, level="warn")
203
198
  for r in restart_reasons:
204
199
  self.log.warn(f"- {r}")
205
200
  self.log.warn("\n")
206
201
 
207
202
  if no_restart_reasons:
208
- self.log.warn(f"{self.messages.anti_restart_splash}")
203
+ self.say(self.messages.anti_restart_splash, level="warn")
209
204
  for r in no_restart_reasons:
210
205
  self.log.warn(f"{self.messages.bullet} {r}")
211
206
  self.log.warn("\n")
@@ -215,27 +210,26 @@ class ServerWatcher:
215
210
 
216
211
  gap = abs(pro - anti)
217
212
 
218
- # decision
219
213
  if pro == 0:
220
- self.log.info(self.messages.log_no_restart)
214
+ self.say(self.messages.log_no_restart)
221
215
  return
222
216
 
223
217
  if pro > anti and snap.players == 0:
224
- self.log.info(self.messages.log_immediate_restart)
218
+ self.say(self.messages.log_immediate_restart)
225
219
  self.restart_and_wait()
226
220
  return
227
221
 
228
- self.log.info(self.messages.log_scheduled)
222
+ self.say(self.messages.log_scheduled)
229
223
 
230
224
  if gap <= 2:
231
- self.log.warn(self.fmt(self.messages.log_gap_low, gap=gap))
225
+ self.say(self.messages.log_gap_low, level="warn", gap=gap)
232
226
  self.schedule_restart(self.cfg.low_gap_minutes)
233
- self.log.warn(self.fmt(self.messages.log_gap_high, gap=gap))
227
+ else:
228
+ self.say(self.messages.log_gap_high, level="warn", gap=gap)
234
229
  self.schedule_restart(self.cfg.high_gap_minutes)
235
230
 
236
231
  self.restart_and_wait()
237
232
 
238
- # main loop
239
233
  def run(self):
240
234
  if self.global_cfg.clear_terminal:
241
235
  clearTerminal()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 4.7.1
3
+ Version: 4.9
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
File without changes
File without changes
File without changes