yaml-query

1
#!/usr/bin/env lua5.1
2
 
3
local yaml = require "yaml";
4
 
5
local query = arg[1];
6
table.remove(arg, 1);
7
 
8
local query, string_out = query:gsub("^=", "");
9
 
10
local query_func = assert(loadstring("return "..query));
11
 
12
if #arg == 0 then arg[1] = "-"; end
13
 
14
for i, fn in ipairs(arg) do
15
	local f = io.stdin;
16
	if fn ~= "-" then
17
		f = assert(io.open(fn, "r"));
18
	end
19
	local yaml_doc = yaml.load(f:read("*a"));
20
	setfenv(query_func, yaml_doc);
21
	local result = query_func();
22
	if string_out == 1 then
23
		print(result);
24
	else
25
		print(yaml.dump(result));
26
	end
27
	f:close();
28
end