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) RawInline = function(rawinline)
return pandoc.Str(rawinline.text:gsub("\\n", "\n"):gsub("\\t", "\t")) return pandoc.Str(rawinline.text:gsub("\\n", "\n"):gsub("\\t", "\t"))
end, end,
SoftBreak = function(softbreak)
return pandoc.Str("\n")
end,
Inline = function(inline) return pandoc.utils.stringify(inline) end, Inline = function(inline) return pandoc.utils.stringify(inline) end,
}) })
end end
@ -6641,8 +6644,11 @@ function lit.puts(key, ...)
local msg = pandoc.metatotable(pandoc.read([[--- local msg = pandoc.metatotable(pandoc.read([[---
INFO: INFO:
checking: checking:
en: Checking:\n#1 en: "Checking:\n#1"
es: Comprobando:\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: WARNING:
foo: foo:
en: bar en: bar
@ -6660,6 +6666,9 @@ ERROR:
invalid_value: invalid_value:
en: Invalid value '#1' in key '#2' en: Invalid value '#1' in key '#2'
es: Valor '#1' inválido en clave '#2' es: Valor '#1' inválido en clave '#2'
invalid_cmd:
en: Invalid cmd '#1'
es: Comando '#1' inválido
no_key: no_key:
en: Key '#1' not found en: Key '#1' not found
es: Clave '#1' no encontrada es: Clave '#1' no encontrada
@ -6719,6 +6728,19 @@ function lit.exam(doc)
-- Checks code block -- Checks code block
local function check(parsed) 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 -- Checks for extra and unwanted metadata
local function checkextra(meta) local function checkextra(meta)
@ -6784,7 +6806,10 @@ function lit.exam(doc)
checkmeta(meta, "mandatory") checkmeta(meta, "mandatory")
checkmeta(meta, "optional") checkmeta(meta, "optional")
checkextra(meta) 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 elseif isok and pandoc.utils.stringify(res.meta):isempty() then
lit.puts("meta_empty") lit.puts("meta_empty")
else else

View File

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

View File

@ -120,6 +120,19 @@ function lit.exam(doc)
-- Checks code block -- Checks code block
local function check(parsed) 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 -- Checks for extra and unwanted metadata
local function checkextra(meta) local function checkextra(meta)
@ -185,7 +198,10 @@ function lit.exam(doc)
checkmeta(meta, "mandatory") checkmeta(meta, "mandatory")
checkmeta(meta, "optional") checkmeta(meta, "optional")
checkextra(meta) 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 elseif isok and pandoc.utils.stringify(res.meta):isempty() then
lit.puts("meta_empty") lit.puts("meta_empty")
else else

View File

@ -1,8 +1,11 @@
--- ---
INFO: INFO:
checking: checking:
en: Checking:\n#1 en: "Checking:\n#1"
es: Comprobando:\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: WARNING:
foo: foo:
en: bar en: bar
@ -20,6 +23,9 @@ ERROR:
invalid_value: invalid_value:
en: Invalid value '#1' in key '#2' en: Invalid value '#1' in key '#2'
es: Valor '#1' inválido en clave '#2' es: Valor '#1' inválido en clave '#2'
invalid_cmd:
en: Invalid cmd '#1'
es: Comando '#1' inválido
no_key: no_key:
en: Key '#1' not found en: Key '#1' not found
es: Clave '#1' no encontrada es: Clave '#1' no encontrada

View File

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

View File

@ -3,14 +3,23 @@
--- ---
id: fn1 id: fn1
... ...
1 + 2 + 3 1 + 1
Override: Override:
--- ---
id: fn1 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 # Block with Unused Argument
@ -19,22 +28,4 @@ Override:
args: args:
a: 1 a: 1
... ...
7 + 8 + 9 1 + 1
# 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."