Annotate

tools/tb2err @ 13134:638f627e707f

util.datamanager: Add O(1) list indexing with on-disk index Index file contains offsets and lengths of each item() which allows seeking directly to each item and reading it without parsing the entire file. Also allows tricks like binary search, assuming items have some defined order. We take advantage of the 1-based indexing in tables to store a magic header in the 0 position, so that table index 1 ends up at file index 1.
author Kim Alvefur <zash@zash.se>
date Tue, 11 May 2021 02:09:56 +0200
parent 13066:4aa4a51a7a77
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13063
414952def2d3 tools/tb2err: Drop use of lua-any since it should run fine on any Lua
Kim Alvefur <zash@zash.se>
parents: 11191
diff changeset
1 #!/usr/bin/env lua
11191
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 -- traceback to errors.err for vim -q
13064
b172db27ffed tools/tb2err: Add some example usage in a comment
Kim Alvefur <zash@zash.se>
parents: 13063
diff changeset
3 -- e.g. curl https://prosody.im/paste/xxx | tb2err > errors.err && vim -q
b172db27ffed tools/tb2err: Add some example usage in a comment
Kim Alvefur <zash@zash.se>
parents: 13063
diff changeset
4
11191
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local path_sep = package.config:sub(1,1);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 for line in io.lines() do
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local src, err = line:match("%s*(%S+)(:%d+: .*)")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 if src then
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 src = src:gsub("\\", path_sep);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local cut = src:match("/()core/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 or src:match("/()net/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 or src:match("/()util/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 or src:match("/()modules/")
13065
ab546c5977ed tools/tb2err: Rewrite prosody-modules paths to ../modules
Kim Alvefur <zash@zash.se>
parents: 13064
diff changeset
14 or src:match("/()prosody%-modules/")
11191
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 or src:match("/()plugins/")
13066
4aa4a51a7a77 tools/tb2err: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 13065
diff changeset
16 or src:match("/()prosody[ctl]*$")
11191
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 if cut then
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 src = src:sub(cut);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 end
13065
ab546c5977ed tools/tb2err: Rewrite prosody-modules paths to ../modules
Kim Alvefur <zash@zash.se>
parents: 13064
diff changeset
20 src = src:gsub("prosody%-modules/", "../modules/")
11191
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 src = src:gsub("^modules/", "plugins/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 io.write(src, err, "\n");
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 end
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end