Software /
code /
prosody
Comparison
util/prosodyctl/shell.lua @ 12539:cfdc8cca64d3
util.prosodyctl.shell: Print errors in red to highlight them
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 01 Jun 2022 13:59:00 +0200 |
parent | 12529:7dae6d29b71d |
child | 12573:0f4feaf9ca64 |
comparison
equal
deleted
inserted
replaced
12538:0f56587bb37f | 12539:cfdc8cca64d3 |
---|---|
2 local server = require "net.server"; | 2 local server = require "net.server"; |
3 local st = require "util.stanza"; | 3 local st = require "util.stanza"; |
4 local path = require "util.paths"; | 4 local path = require "util.paths"; |
5 local parse_args = require "util.argparse".parse; | 5 local parse_args = require "util.argparse".parse; |
6 local unpack = table.unpack or _G.unpack; | 6 local unpack = table.unpack or _G.unpack; |
7 local tc = require "util.termcolours"; | |
8 local isatty = require "util.pposix".isatty; | |
7 | 9 |
8 local have_readline, readline = pcall(require, "readline"); | 10 local have_readline, readline = pcall(require, "readline"); |
9 | 11 |
10 local adminstream = require "util.adminstream"; | 12 local adminstream = require "util.adminstream"; |
11 | 13 |
62 end | 64 end |
63 | 65 |
64 local function start(arg) --luacheck: ignore 212/arg | 66 local function start(arg) --luacheck: ignore 212/arg |
65 local client = adminstream.client(); | 67 local client = adminstream.client(); |
66 local opts, err, where = parse_args(arg); | 68 local opts, err, where = parse_args(arg); |
69 local ttyout = isatty(io.stdout); | |
67 | 70 |
68 if not opts then | 71 if not opts then |
69 if err == "param-not-found" then | 72 if err == "param-not-found" then |
70 print("Unknown command-line option: "..tostring(where)); | 73 print("Unknown command-line option: "..tostring(where)); |
71 elseif err == "missing-value" then | 74 elseif err == "missing-value" then |
120 end); | 123 end); |
121 | 124 |
122 client.events.add_handler("received", function (stanza) | 125 client.events.add_handler("received", function (stanza) |
123 if stanza.name == "repl-output" or stanza.name == "repl-result" then | 126 if stanza.name == "repl-output" or stanza.name == "repl-result" then |
124 local result_prefix = stanza.attr.type == "error" and "!" or "|"; | 127 local result_prefix = stanza.attr.type == "error" and "!" or "|"; |
125 print(result_prefix.." "..stanza:get_text()); | 128 local out = result_prefix.." "..stanza:get_text(); |
129 if ttyout and stanza.attr.type == "error" then | |
130 out = tc.getstring(tc.getstyle("red"), out); | |
131 end | |
132 print(out); | |
126 end | 133 end |
127 if stanza.name == "repl-result" then | 134 if stanza.name == "repl-result" then |
128 repl(client); | 135 repl(client); |
129 end | 136 end |
130 end); | 137 end); |