checkcmd implemented

This commit is contained in:
perro tuerto 2023-04-19 11:33:35 -07:00
parent e7436e07a0
commit 3b140b6953
6 changed files with 93 additions and 49 deletions

31
dist/lin.lua vendored
View File

@ -6526,6 +6526,9 @@ if pandoc ~= nil then
RawInline = function(rawinline)
return pandoc.Str(rawinline.text:gsub("\\n", "\n"):gsub("\\t", "\t"))
end,
SoftBreak = function(softbreak)
return pandoc.Str("\n")
end,
Inline = function(inline) return pandoc.utils.stringify(inline) end,
})
end
@ -6641,8 +6644,11 @@ function lit.puts(key, ...)
local msg = pandoc.metatotable(pandoc.read([[---
INFO:
checking:
en: Checking:\n#1
es: Comprobando:\n#1
en: "Checking:\n#1"
es: "Comprobando:\n#1"
skip_check:
en: "Skipping '#1': this check is not supported"
es: "Skipping '#1': esta comprobación no está soportada"
WARNING:
foo:
en: bar
@ -6660,6 +6666,9 @@ ERROR:
invalid_value:
en: Invalid value '#1' in key '#2'
es: Valor '#1' inválido en clave '#2'
invalid_cmd:
en: Invalid cmd '#1'
es: Comando '#1' inválido
no_key:
en: Key '#1' not found
es: Clave '#1' no encontrada
@ -6719,6 +6728,19 @@ function lit.exam(doc)
-- Checks code block
local function check(parsed)
-- Checks for valid command
local function checkcmd(meta)
if meta["cmd"] then
cmd = meta["cmd"]:split()[1]
if os.isunix() then
status = io.try("type", cmd)
if not(status) then lit.puts("invalid_cmd", cmd) end
else
lit.puts("skip_check", "checkcmd")
end
end
end
-- Checks for extra and unwanted metadata
local function checkextra(meta)
@ -6784,7 +6806,10 @@ function lit.exam(doc)
checkmeta(meta, "mandatory")
checkmeta(meta, "optional")
checkextra(meta)
-- TODO: checks for duplicates
checkcmd(meta)
-- TODO: checks for
-- with lang and cmd (warn)
-- overrides (warn)
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
lit.puts("meta_empty")
else

View File

@ -265,6 +265,9 @@ if pandoc ~= nil then
RawInline = function(rawinline)
return pandoc.Str(rawinline.text:gsub("\\n", "\n"):gsub("\\t", "\t"))
end,
SoftBreak = function(softbreak)
return pandoc.Str("\n")
end,
Inline = function(inline) return pandoc.utils.stringify(inline) end,
})
end

View File

@ -120,6 +120,19 @@ function lit.exam(doc)
-- Checks code block
local function check(parsed)
-- Checks for valid command
local function checkcmd(meta)
if meta["cmd"] then
cmd = meta["cmd"]:split()[1]
if os.isunix() then
status = io.try("type", cmd)
if not(status) then lit.puts("invalid_cmd", cmd) end
else
lit.puts("skip_check", "checkcmd")
end
end
end
-- Checks for extra and unwanted metadata
local function checkextra(meta)
@ -185,7 +198,10 @@ function lit.exam(doc)
checkmeta(meta, "mandatory")
checkmeta(meta, "optional")
checkextra(meta)
-- TODO: checks for duplicates
checkcmd(meta)
-- TODO: checks for
-- with lang and cmd (warn)
-- overrides (warn)
elseif isok and pandoc.utils.stringify(res.meta):isempty() then
lit.puts("meta_empty")
else

View File

@ -1,8 +1,11 @@
---
INFO:
checking:
en: Checking:\n#1
es: Comprobando:\n#1
en: "Checking:\n#1"
es: "Comprobando:\n#1"
skip_check:
en: "Skipping '#1': this check is not supported"
es: "Skipping '#1': esta comprobación no está soportada"
WARNING:
foo:
en: bar
@ -20,6 +23,9 @@ ERROR:
invalid_value:
en: Invalid value '#1' in key '#2'
es: Valor '#1' inválido en clave '#2'
invalid_cmd:
en: Invalid cmd '#1'
es: Comando '#1' inválido
no_key:
en: Key '#1' not found
es: Clave '#1' no encontrada

View File

@ -8,13 +8,13 @@ Malformed YAML:
id: fn1
fail
...
1 + 2 + 3
1 + 1
Empty YAML:
---
...
1 + 2 + 3
1 + 1
Empty YAML and code:
@ -26,28 +26,28 @@ Misses id:
---
identifier: fn1
...
1 + 2 + 3
1 + 1
Wrong id (doesn't starts with `%a`):
---
id: 1
...
1 + 2 + 3
1 + 1
Wrong id (doesn't follows with `[_%w]`):
---
id: f-1
...
1 + 2 + 3
1 + 1
Wrong id (more than 1 word):
---
id: f n1
...
1 + 2 + 3
1 + 1
Invalid value:
@ -55,7 +55,7 @@ Invalid value:
id: fn1
shift: "true"
...
Invalid shift value
1 + 1
Invalid path:
@ -63,18 +63,31 @@ Invalid path:
id: fn1
dump: invalid/path.txt
...
Invalid dump value
1 + 1
Extra key:
---
id: fn1
language: fennel
args:
a: 1
b: 2
...
(* #a #b)
1 + 1
Uknown lang:
---
id: fn1
lang: fail
...
1 + 1
Uknown cmd:
---
id: fn1
cmd: piton -E -X utf8
...
1 + 1
Empty code:
@ -96,16 +109,6 @@ Invalid code:
...
false + false
Uknown cmd:
---
id: fn1
cmd: piton -E -X utf8
args:
n: 2
...
#n + #n
Infinite loop:
---

View File

@ -3,14 +3,23 @@
---
id: fn1
...
1 + 2 + 3
1 + 1
Override:
---
id: fn1
...
4 + 5 + 6
1 + 2
# Block with Language and Command
---
id: fn4
lang: python
cmd: python -E -X utf8
...
1 + 1
# Block with Unused Argument
@ -19,22 +28,4 @@ Override:
args:
a: 1
...
7 + 8 + 9
# Block with Language and Command
---
id: fn4
lang: python
cmd: python -E -X utf8
args:
n: 2
...
#n * #n
# Block with Unknown Language
---
id: fn5
...
"Lang becomes cmd."
1 + 1