Compare commits

..

No commits in common. "master" and "v0.1.0" have entirely different histories.

16 changed files with 58 additions and 285 deletions

View File

@ -1,9 +0,0 @@
kind: pipeline
name: default
steps:
- name: test
image: "xena/lua:5.3"
commands:
- luarocks-5.3 install --only-deps ./ln-0.2.0-1.rockspec
- busted-5.3

1
.envrc
View File

@ -1 +0,0 @@
eval "$(lorri direnv)"

1
.gitignore vendored
View File

@ -1 +0,0 @@
result

View File

@ -1,7 +0,0 @@
run = (cmd) ->
status = os.execute cmd
unless status
error string.format "got nonzero exit status %d", status
run "./test.sh"
run "nix-build"

View File

@ -55,22 +55,3 @@ local lgr = ln.Logger:new()
lgr:log {foo = "bar"} lgr:log {foo = "bar"}
-- time="2019-12-25T13:27:32" foo=bar -- time="2019-12-25T13:27:32" foo=bar
``` ```
Or custom filters
```lua
local lgr = ln.Logger:new {
filters = {
function(message)
if string.find(message, "debug=true") and os.getenv("DEBUG") ~= "YES" then
return false
end
end,
print,
}
}
lgr:log {debug = "true", line = "PRIVMSG #foo :bar", dir = "out"}
```
This will make the log line only show up when `DEBUG` is set to `"YES"`.

View File

@ -1,23 +0,0 @@
{ pkgs ? import <nixpkgs> { }, lua ? pkgs.lua5_3
, luaPackages ? pkgs.lua53Packages }:
with pkgs;
with luaPackages;
buildLuarocksPackage {
pname = "ln";
version = "0.2.1-2";
src = fetchurl {
url = "https://luarocks.org/ln-0.2.1-2.src.rock";
sha256 = "1hb1vw68w407y05nprp352c0di6iybz4gjdhc0p521cpif4l8i1l";
};
propagatedBuildInputs = [ lua dkjson ];
meta = with lib; {
homepage = "https://tulpa.dev/cadey/lua-ln";
description = "The natural log function";
license.fullName = "0bsd";
};
}

View File

@ -9,7 +9,7 @@ description = {
summary = "The natural log function" summary = "The natural log function"
} }
dependencies = { dependencies = {
"lua ~> 5.1", "lua ~> 5.3",
"dkjson" "dkjson"
} }
build = { build = {

View File

@ -1,21 +0,0 @@
package = "ln"
version = "0.1.0-1"
source = {
url = "git+https://tulpa.dev/cadey/lua-ln",
tag = "v0.1.0"
}
description = {
summary = "The natural log function",
homepage = "https://tulpa.dev/cadey/lua-ln",
license = "0bsd"
}
dependencies = {
"lua ~> 5.3",
"dkjson"
}
build = {
type = "builtin",
modules = {
ln = "src/ln.lua"
}
}

View File

@ -1,21 +0,0 @@
package = "ln"
version = "0.2.0-1"
source = {
url = "git+https://tulpa.dev/cadey/lua-ln",
tag = "v0.2.0"
}
description = {
summary = "The natural log function",
homepage = "https://tulpa.dev/cadey/lua-ln",
license = "0bsd"
}
dependencies = {
"lua ~> 5.3",
"dkjson"
}
build = {
type = "builtin",
modules = {
ln = "src/ln.lua"
}
}

View File

@ -1,20 +0,0 @@
package = "ln"
version = "0.2.1-1"
source = {
url = "git+https://tulpa.dev/cadey/lua-ln"
}
description = {
homepage = "https://tulpa.dev/cadey/lua-ln",
license = "0bsd",
summary = "The natural log function"
}
dependencies = {
"lua ~> 5.1",
"dkjson"
}
build = {
type = "builtin",
modules = {
ln = "src/ln.lua"
}
}

View File

@ -1,20 +0,0 @@
package = "ln"
version = "0.2.1-2"
source = {
url = "git+https://tulpa.dev/cadey/lua-ln"
}
description = {
homepage = "https://tulpa.dev/cadey/lua-ln",
license = "0bsd",
summary = "The natural log function"
}
dependencies = {
"lua",
"dkjson"
}
build = {
type = "builtin",
modules = {
ln = "src/ln.lua"
}
}

View File

@ -1,13 +0,0 @@
{ pkgs ? import <nixpkgs> { } }:
let lua = pkgs.lua5_3.withPackages (ps: with ps; [ dkjson ]);
in pkgs.mkShell {
buildInputs = with pkgs;
with lua53Packages; [
luarocks-nix
lua
busted
moonscript
];
}

View File

@ -1,106 +1,62 @@
local ln = require "ln" local ln = require "ln"
describe("ln", function() describe("ln", function()
describe("exports", function() describe("exports", function()
it("has Logger", function() it("has Logger", function()
assert.truthy(ln.Logger) assert.truthy(ln.Logger)
end) end)
it("has default_logger", function() it("has default_logger", function()
assert.truthy(ln.default_logger) assert.truthy(ln.default_logger)
assert.truthy(ln.default_logger.formatter) end)
assert.truthy(ln.default_logger.filters)
end)
it("has LogfmtFormatter", function() it("has LogfmtFormatter", function()
assert.truthy(ln.LogfmtFormatter) assert.truthy(ln.LogfmtFormatter)
end) end)
it("has JSONFormatter", function() it("has JSONFormatter", function()
assert.truthy(ln.JSONFormatter) assert.truthy(ln.JSONFormatter)
end) end)
it("has log", function() it("has log", function()
assert.truthy(ln.log) assert.truthy(ln.log)
end) end)
it("has err", function() it("has err", function()
assert.truthy(ln.err) assert.truthy(ln.err)
end) end)
end) end)
describe("default logger operations", function() describe("default logger operations", function()
local lgr = ln.default_logger local lgr = ln.default_logger
local msg it("can log", function()
lgr.filters = { lgr:log {foo = "bar"}
function(message) msg = message end, end)
}
it("can log", function() it("can error", function()
lgr:log {foo = "bar"} lgr:err("vibe check failed", {foo = "bar"})
assert.truthy(string.find(msg, 'foo=bar')) end)
end)
it("can error", function() it("takes multiple tables", function()
lgr:err("vibe check failed", {foo = "baz"}) lgr:log({foo = "bar"}, {baz = "boz"})
assert.truthy(string.find(msg, 'foo=baz')) end)
assert.truthy(string.find(msg, 'vibe check failed'))
end)
it("takes multiple tables", function() it("lets you override the formatter", function()
lgr:log({foo = "bar"}, {baz = "boz"}) lgr.formatter = ln.JSONFormatter:new()
assert.truthy(string.find(msg, 'foo=bar')) lgr:log {foo = "bar"}
assert.truthy(string.find(msg, 'baz=boz')) end)
end) end)
it("lets you override the formatter", function() describe("logfmt", function()
lgr.formatter = ln.JSONFormatter:new() local fmtr = ln.LogfmtFormatter:new()
lgr:log {foo = "bar"}
assert.truthy(string.find(msg, "{"))
end)
end)
describe("logfmt", function() it("should return a non-nil message", function()
local fmtr = ln.LogfmtFormatter:new() assert.truthy(fmtr:format({foo = "bar"}))
end)
it("should return a non-nil message", function() it("should have spaces when the input does", function()
assert.truthy(fmtr:format({foo = "bar"})) local msg = fmtr:format {foo = "bar with spaces"}
end) assert.truthy(string.find(msg, 'foo="bar with spaces"'))
end)
it("should have spaces when the input does", function() end)
local msg = fmtr:format {foo = "bar with spaces"}
assert.truthy(string.find(msg, 'foo="bar with spaces"'))
end)
end)
describe("logger options", function()
local msg
local filter_func = function(message) msg = message end
local lgr = ln.Logger:new {
formatter = ln.LogfmtFormatter:new(),
filters = {
filter_func,
}
}
it("sets the formatter to non-nil", function()
assert.truthy(lgr.formatter)
end)
it("respects filters", function()
lgr:log {foo = "bar"}
assert.truthy(string.find(msg, 'foo=bar'))
end)
it("ends if a filter returns non-nil", function()
msg = nil
lgr.filters = {
function(message) return false end,
filter_func,
}
lgr:log {foo = "bar"}
assert.falsy(msg)
end)
end)
end) end)

View File

@ -1,12 +0,0 @@
ln = require "ln"
describe "moonscript tests", ->
lgr = ln.default_logger
msg = ""
lgr.filters = {
(message) -> msg = message,
}
it "can log", ->
ln.log {foo: "bar"}
assert.truthy string.find msg, "foo=bar"

View File

@ -63,27 +63,18 @@ function Logger:log(...)
end end
end end
local message = self.formatter:format(result) message = self.formatter:format(result)
for _, v in pairs(self.filters) do
if v(message) ~= nil then print(message)
return
end
end
end end
function Logger:new(o) function Logger:new(formatter)
if o == nil then if formatter == nil then
o = {} formatter = LogfmtFormatter:new()
end end
local o = {
if o.formatter == nil then formatter = formatter,
o.formatter = LogfmtFormatter:new() }
end
if o.filters == nil then
o.filters = {print}
end
setmetatable(o, self) setmetatable(o, self)
self.__index = self self.__index = self
return o return o

11
test.sh
View File

@ -1,10 +1,3 @@
#!/usr/bin/env bash #!/bin/sh
set -e
set -x
nix-shell -p lua5_1 -p lua51Packages.busted -p lua51Packages.moonscript --run "busted"
nix-shell -p lua5_2 -p lua52Packages.busted -p lua52Packages.moonscript --run "busted"
nix-shell -p lua5_3 -p lua53Packages.busted -p lua53Packages.moonscript --run "busted"
nix-shell -p luajit -p luajitPackages.busted -p luajitPackages.moonscript --run "busted"
busted --defer-print