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

@ -1,62 +1,106 @@
local ln = require "ln"
describe("ln", function()
describe("exports", function()
it("has Logger", function()
assert.truthy(ln.Logger)
end)
describe("exports", function()
it("has Logger", function()
assert.truthy(ln.Logger)
end)
it("has default_logger", function()
assert.truthy(ln.default_logger)
end)
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()
assert.truthy(ln.LogfmtFormatter)
end)
it("has LogfmtFormatter", function()
assert.truthy(ln.LogfmtFormatter)
end)
it("has JSONFormatter", function()
assert.truthy(ln.JSONFormatter)
end)
it("has JSONFormatter", function()
assert.truthy(ln.JSONFormatter)
end)
it("has log", function()
assert.truthy(ln.log)
end)
it("has log", function()
assert.truthy(ln.log)
end)
it("has err", function()
assert.truthy(ln.err)
end)
end)
it("has err", function()
assert.truthy(ln.err)
end)
end)
describe("default logger operations", function()
local lgr = ln.default_logger
it("can log", function()
lgr:log {foo = "bar"}
end)
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"})
end)
it("can error", function()
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"})
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"}
end)
end)
it("lets you override the formatter", function()
lgr.formatter = ln.JSONFormatter:new()
lgr:log {foo = "bar"}
assert.truthy(string.find(msg, "{"))
end)
end)
describe("logfmt", function()
local fmtr = ln.LogfmtFormatter:new()
describe("logfmt", function()
local fmtr = ln.LogfmtFormatter:new()
it("should return a non-nil message", function()
assert.truthy(fmtr:format({foo = "bar"}))
end)
it("should return a non-nil message", function()
assert.truthy(fmtr:format({foo = "bar"}))
end)
it("should have spaces when the input does", function()
local msg = fmtr:format {foo = "bar with spaces"}
assert.truthy(string.find(msg, 'foo="bar with spaces"'))
end)
end)
it("should have spaces when the input does", function()
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)

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