Open pablomayobre opened 7 years ago
Maybe this could be fixed by adding a base function, ie deps.base
which is called by deps.run
and can be used without it
local log = require 'loverocks.log'
local luarocks = require 'loverocks.luarocks'
local deps = {}
function deps.build(parser)
parser:description
"Installs all packages listed as dependencies in your conf.lua file."
parser:option "-s" "--server"
:description
"Fetch rocks/rockspecs from this server as a priority."
parser:option "--only-server"
:description
"Fetch rocks/rockspecs from this server, ignoring other servers."
end
function deps.base(dep_list, flags)
log:fs("luarocks install <> --only-deps")
log:assert(luarocks.sandbox(flags, function()
local lr_deps = require 'luarocks.deps'
local parsed_deps = {}
for _, s in ipairs(dep_list) do
table.insert(parsed_deps, lr_deps.parse_dep(s))
end
return lr_deps.fulfill_dependencies({
name = flags.name or 'LOVE_GAME',
version = "(love)",
dependencies = parsed_deps
}, "one")
end))
log:info("Dependencies installed succesfully!")
end
function deps.run(conf, args)
if conf._loverocks_no_config then
log:error("conf.lua error: %s", conf._loverocks_no_config)
end
if not conf.dependencies then
log:error("please add a dependency table to your conf.lua FIXME: better error")
end
local flags = luarocks.make_flags(conf)
flags.init_rocks = true
flags.name = conf.identity or "LOVE_GAME"
assert(type(flags.name) == 'string')
if args.server then
table.insert(flags.from, 1, args.server)
end
if args.only_server then
flags.only_from = args.only_server
end
deps.base(conf.dependencies, flags)
end
return deps
deps.run
could potentially accept a list of dependencies instead of aconf
table. This would be as easy as checking if the table is an array containing strings (there is a schema checking library already in this repository).This would make it easier to use as a library.
Note that this additional arguments are only available through the library and not exposed to the CLI (although
name
andtree
could)