1 #!/usr/bin/env luajit |
1 #!/usr/bin/env luajit |
2 |
2 |
3 local json = require "cjson"; |
3 local json = require "cjson"; |
4 local time = require "socket".gettime; |
4 local time = require "socket".gettime; |
|
5 local sleep = require "socket".sleep; |
5 |
6 |
6 local result_log_filename = nil; |
7 local result_log_filename = nil; |
7 local server_log_reader = nil; |
8 local server_log_reader = nil; |
|
9 local server_log_wait_time = 0.2; |
|
10 |
8 local property_rules = {}; |
11 local property_rules = {}; |
9 |
12 |
10 local function apply_object_properties(class, name, object) |
13 local function apply_object_properties(class, name, object) |
11 for _, rule in ipairs(property_rules) do |
14 for _, rule in ipairs(property_rules) do |
12 if (not(rule.class) or tostring(rule.class):lower() == tostring(class):lower()) |
15 if (not(rule.class) or tostring(rule.class):lower() == tostring(class):lower()) |
39 result_log_filename = get_value(); |
42 result_log_filename = get_value(); |
40 elseif opt == "--server-log" or opt == "-s" then |
43 elseif opt == "--server-log" or opt == "-s" then |
41 local server_log = assert(io.open(get_value(), "r")); |
44 local server_log = assert(io.open(get_value(), "r")); |
42 function server_log_reader() |
45 function server_log_reader() |
43 local new_lines = {}; |
46 local new_lines = {}; |
44 for line in server_log:lines() do |
47 local last_line_time = time(); |
45 table.insert(new_lines, line); |
48 while time() - last_line_time < server_log_wait_time do |
|
49 sleep(0.05); |
|
50 for line in server_log:lines() do |
|
51 table.insert(new_lines, line); |
|
52 last_line_time = time(); |
|
53 end |
46 end |
54 end |
47 return new_lines; |
55 return new_lines; |
48 end |
56 end |
49 else |
57 else |
50 error("Unhandled command-line option: "..opt); |
58 error("Unhandled command-line option: "..opt); |