aboutsummaryrefslogtreecommitdiffstats
path: root/tools/tb2err
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2020-10-28 22:42:43 +0100
committerKim Alvefur <zash@zash.se>2020-10-28 22:42:43 +0100
commit1e8f53864feaf660df3b64ff510d644636ef532a (patch)
tree8d63846c7fbe0d4cf12067fee9cec4581b5349dc /tools/tb2err
parent74962fab10271a5154adbbd6459bba0d56bf6e3c (diff)
downloadprosody-1e8f53864feaf660df3b64ff510d644636ef532a.tar.gz
prosody-1e8f53864feaf660df3b64ff510d644636ef532a.zip
tools/tb2err: Formats Lua traceback in errors.err format
Manually opening to the files and line numbers from a Lua traceback is tedious. This tool converts tracebacks into a format that many compilers and such tools use, which is also compatible with Vim (and possibly other editors). Thus if someone sends you a pastebin link with a traceback, a command like the following gets you right to the relevant lines: curl paste.example/abc123.txt | tb2err > errors.err; vim -q
Diffstat (limited to 'tools/tb2err')
-rwxr-xr-xtools/tb2err21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/tb2err b/tools/tb2err
new file mode 100755
index 00000000..7b676813
--- /dev/null
+++ b/tools/tb2err
@@ -0,0 +1,21 @@
+#!/usr/bin/env lua-any
+-- Lua-Versions: 5.3 5.2 5.1
+-- traceback to errors.err for vim -q
+local path_sep = package.config:sub(1,1);
+for line in io.lines() do
+ local src, err = line:match("%s*(%S+)(:%d+: .*)")
+ if src then
+ src = src:gsub("\\", path_sep);
+ local cut = src:match("/()core/")
+ or src:match("/()net/")
+ or src:match("/()util/")
+ or src:match("/()modules/")
+ or src:match("/()plugins/")
+ or src:match("/()prosody[ctl]*$")
+ if cut then
+ src = src:sub(cut);
+ end
+ src = src:gsub("^modules/", "plugins/")
+ io.write(src, err, "\n");
+ end
+end