aboutsummaryrefslogtreecommitdiffstats
path: root/tools
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
commit4cb9c49d9522b827cca3ff9906b4ca2348c988b1 (patch)
tree8d63846c7fbe0d4cf12067fee9cec4581b5349dc /tools
parent9cb2fdc461083bd6cbcdf9cf3eb7f10dddfe58be (diff)
downloadprosody-4cb9c49d9522b827cca3ff9906b4ca2348c988b1.tar.gz
prosody-4cb9c49d9522b827cca3ff9906b4ca2348c988b1.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')
-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