aboutsummaryrefslogtreecommitdiff
path: root/src/luarocks/cmd/lint.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/luarocks/cmd/lint.lua')
-rw-r--r--src/luarocks/cmd/lint.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/luarocks/cmd/lint.lua b/src/luarocks/cmd/lint.lua
new file mode 100644
index 00000000..c9ea45ea
--- /dev/null
+++ b/src/luarocks/cmd/lint.lua
@@ -0,0 +1,53 @@
1
2--- Module implementing the LuaRocks "lint" command.
3-- Utility function that checks syntax of the rockspec.
4local lint = {}
5
6local util = require("luarocks.util")
7local download = require("luarocks.download")
8local fetch = require("luarocks.fetch")
9
10lint.help_summary = "Check syntax of a rockspec."
11lint.help_arguments = "<rockspec>"
12lint.help = [[
13This is a utility function that checks the syntax of a rockspec.
14
15It returns success or failure if the text of a rockspec is
16syntactically correct.
17]]
18
19function lint.command(flags, input)
20 if not input then
21 return nil, "Argument missing. "..util.see_help("lint")
22 end
23
24 local filename = input
25 if not input:match(".rockspec$") then
26 local err
27 filename, err = download.download("rockspec", input:lower())
28 if not filename then
29 return nil, err
30 end
31 end
32
33 local rs, err = fetch.load_local_rockspec(filename)
34 if not rs then
35 return nil, "Failed loading rockspec: "..err
36 end
37
38 local ok = true
39
40 -- This should have been done in the type checker,
41 -- but it would break compatibility of other commands.
42 -- Making 'lint' alone be stricter shouldn't be a problem,
43 -- because extra-strict checks is what lint-type commands
44 -- are all about.
45 if not rs.description.license then
46 util.printerr("Rockspec has no license field.")
47 ok = false
48 end
49
50 return ok, ok or filename.." failed consistency checks."
51end
52
53return lint