Compare commits

...

11 Commits

Author SHA1 Message Date
Cadey Ratio 3ef4d6557e happy
Signed-off-by: Christine Dodrill <me@christine.website>
2021-05-09 15:20:34 +00:00
Cadey Ratio 448aab6781 move rockspecs to rockspec/
Signed-off-by: Christine Dodrill <me@christine.website>
2021-05-09 15:07:46 +00:00
Cadey Ratio a5cda0400b fix?
Signed-off-by: Christine Dodrill <me@christine.website>
2021-05-09 15:06:17 +00:00
Cadey Ratio c6a03a8d57 open ln up for more versions of lua, test them all
Signed-off-by: Christine Dodrill <me@christine.website>
2021-05-09 15:02:46 +00:00
Cadey Ratio e8e56dc1d1 drone: install deps
continuous-integration/drone/push Build is passing Details
2020-01-19 18:43:45 +00:00
Cadey Ratio 6be57f3199 support drone
continuous-integration/drone/push Build is failing Details
2020-01-19 18:40:11 +00:00
Cadey Ratio 91faa7b5ef rockspec 2019-12-25 19:11:15 +00:00
Cadey Ratio 1b74fa386d src/ln: document filters, let them reject lines 2019-12-25 19:02:17 +00:00
Cadey Ratio ba8df8cb33 src/ln: support filters 2019-12-25 18:53:37 +00:00
Cadey Ratio 3664cbb504 src/ln: change formatter argument to a table with formatter 2019-12-25 18:41:04 +00:00
Cadey Ratio 2440dbc926 add rockspec 2019-12-25 18:27:04 +00:00
16 changed files with 285 additions and 58 deletions

9
.drone.yml Normal file
View File

@ -0,0 +1,9 @@
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 Normal file
View File

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

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
result

7
.within/test.moon Normal file
View File

@ -0,0 +1,7 @@
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,3 +55,22 @@ local lgr = ln.Logger:new()
lgr:log {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"`.

23
default.nix Normal file
View File

@ -0,0 +1,23 @@
{ 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

@ -0,0 +1,21 @@
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

@ -0,0 +1,21 @@
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

@ -0,0 +1,20 @@
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

@ -0,0 +1,20 @@
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

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

13
shell.nix Normal file
View File

@ -0,0 +1,13 @@
{ 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

@ -8,6 +8,8 @@ describe("ln", function()
it("has default_logger", function()
assert.truthy(ln.default_logger)
assert.truthy(ln.default_logger.formatter)
assert.truthy(ln.default_logger.filters)
end)
it("has LogfmtFormatter", function()
@ -29,21 +31,32 @@ describe("ln", function()
describe("default logger operations", function()
local lgr = ln.default_logger
local msg
lgr.filters = {
function(message) msg = message end,
}
it("can log", function()
lgr:log {foo = "bar"}
assert.truthy(string.find(msg, 'foo=bar'))
end)
it("can error", function()
lgr:err("vibe check failed", {foo = "bar"})
lgr:err("vibe check failed", {foo = "baz"})
assert.truthy(string.find(msg, 'foo=baz'))
assert.truthy(string.find(msg, 'vibe check failed'))
end)
it("takes multiple tables", function()
lgr:log({foo = "bar"}, {baz = "boz"})
assert.truthy(string.find(msg, 'foo=bar'))
assert.truthy(string.find(msg, 'baz=boz'))
end)
it("lets you override the formatter", function()
lgr.formatter = ln.JSONFormatter:new()
lgr:log {foo = "bar"}
assert.truthy(string.find(msg, "{"))
end)
end)
@ -59,4 +72,35 @@ describe("ln", function()
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)

12
spec/ln_spec.moon Normal file
View File

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

11
test.sh
View File

@ -1,3 +1,10 @@
#!/bin/sh
#!/usr/bin/env bash
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