summaryrefslogtreecommitdiff
path: root/minecctl/misc-commands.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-07-07 22:32:11 +0200
committerDavid Härdeman <david@hardeman.nu>2020-07-07 22:32:11 +0200
commit4ae60696aed938347cc1cf2a5d8f5a2b86292132 (patch)
treeb83ad5727b56f010c0e90bb3f80b4ff95bf04082 /minecctl/misc-commands.c
parente685df91251ca111e42306e6f36835e55f052c0c (diff)
Improve handling of info and status commands
Diffstat (limited to 'minecctl/misc-commands.c')
-rw-r--r--minecctl/misc-commands.c92
1 files changed, 42 insertions, 50 deletions
diff --git a/minecctl/misc-commands.c b/minecctl/misc-commands.c
index c7c09d0..e23de37 100644
--- a/minecctl/misc-commands.c
+++ b/minecctl/misc-commands.c
@@ -58,40 +58,11 @@ static bool saddr_match(struct list_head *la, struct list_head *lb)
bool do_lint(struct cfg *cfg)
{
- struct server *server;
- unsigned lineno;
- const char *error;
- bool rv = true;
struct server *a, *b;
unsigned ia, ib;
+ bool rv = true;
- /* server->scfg.filename check excludes servers created from cmdline */
- list_for_each_entry(server, &cfg->servers, list) {
- if (!server->scfg.filename)
- continue;
-
- if (!server_read_config(cfg, server, &lineno, &error)) {
- if (lineno != 0)
- info("• %s: %sfail%s - line %u: %s",
- server->name, ansi_red, ansi_normal,
- lineno, error);
- else
- info("• %s: %sfail%s - %s",
- server->name, ansi_red, ansi_normal,
- error);
- rv = false;
- } else if (!scfg_validate(&server->scfg, &error)) {
- info("• %s: %sfail%s - %s",
- server->name, ansi_red, ansi_normal,
- error);
- rv = false;
- } else {
- info("• %s: %sok%s", server->name, ansi_green,
- ansi_normal);
- }
- }
-
- info("");
+ rv = server_read_all_configs(cfg, true);
dump_config(cfg);
@@ -155,44 +126,65 @@ bool do_pcount(struct cfg *cfg)
return true;
}
-bool do_status(struct cfg *cfg)
+static bool do_one_status(struct cfg *cfg, struct server *server)
{
- struct server *server;
- const char *error;
unsigned online, max;
-
- /* FIXME: Do all servers when default not given */
- server = server_get_default(cfg);
- if (!server) {
- error("failed to get default server");
- return false;
- }
+ const char *error;
+ bool rv = true;
info("• %s", server->name);
if (list_empty(&server->scfg.rcons))
info(" rcon : not configured");
- else if (!do_rcon_pcount(cfg, server, &online, &max, &error))
+ else if (do_rcon_pcount(cfg, server, &online, &max, &error))
+ info(" rcon : %sok%s", ansi_green, ansi_normal);
+ else {
info(" rcon : %sfail%s (%s)",
ansi_red, ansi_normal, error);
- else
- info(" rcon : %sok%s", ansi_green, ansi_normal);
+ rv = false;
+ }
if (list_empty(&server->scfg.remotes))
info(" mc : not configured");
- else if (!do_mc_pcount(cfg, server, &online, &max, &error))
+ else if (do_mc_pcount(cfg, server, &online, &max, &error))
+ info(" mc : %sok%s", ansi_green, ansi_normal);
+ else {
info(" mc : %sfail%s (%s)",
ansi_red, ansi_normal, error);
- else
- info(" mc : %sok%s", ansi_green, ansi_normal);
+ rv = false;
+ }
if (!server->scfg.systemd_service || !server->scfg.systemd_obj)
info(" systemd service : not configured");
- else if (!systemd_service_running(&server->scfg, &error))
+ else if (systemd_service_running(&server->scfg, &error))
+ info(" systemd service : %sactive%s", ansi_green, ansi_normal);
+ else {
info(" systemd service : %sfail%s (%s)",
ansi_red, ansi_normal, error);
- else
- info(" systemd service : %sactive%s", ansi_green, ansi_normal);
+ rv = false;
+ }
+
+ return rv;
+}
+
+bool do_status(struct cfg *cfg)
+{
+ struct server *server;
+
+ if (cfg->default_set) {
+ server = server_get_default(cfg);
+ if (!server) {
+ error("failed to get default server");
+ return false;
+ }
+
+ do_one_status(cfg, server);
+ } else {
+ server_read_all_configs(cfg, false);
+ list_for_each_entry(server, &cfg->servers, list)
+ do_one_status(cfg, server);
+ }
+
systemd_delete();
return true;