Skip to content

Commit

Permalink
rocks: forward options to luarocks
Browse files Browse the repository at this point in the history
The policy for check of luarocks flags has been changed
(moved from tarantoolctl to luarocks).
Chdir has been moved to luarocks.
Unsupported flags have been deleted from luarocks

@TarantoolBot document
Title: Update tarantoolctl rocks
tarantoolctl rocks commands has been added:
build
config
download
init
lint
new_version
purge
which
write_rockspec

https://github.com/luarocks/luarocks/wiki/luarocks

Closes #4629
  • Loading branch information
LeonidVas committed Apr 10, 2020
1 parent 17f6af7 commit 28a3b55
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 132 deletions.
169 changes: 38 additions & 131 deletions extra/dist/tarantoolctl.in
Expand Up @@ -21,7 +21,6 @@ ffi.cdef[[
int kill(int pid, int sig);
int isatty(int fd);
int getppid(void);
int chdir(const char *path);
]]

local TIMEOUT_INFINITY = 100 * 365 * 86400
Expand Down Expand Up @@ -936,42 +935,43 @@ local function rocks()
cfg.init()
local util = require("luarocks.util")
local command_line = require("luarocks.cmd")
local options = keyword_arguments
local key = nil
if options["only-server"] ~= nil then
key = find_arg("only%-server")
else
key = find_arg("server")
end
table.insert(positional_arguments, key)

-- Tweak help messages
util.see_help = function(command, program)
-- TODO: print extended help message here
return "See Tarantool documentation for help."
end

-- Enable only useful commands
-- Disabled: path, upload
local rocks_commands = {
build = "luarocks.cmd.build",
config = "luarocks.cmd.config",
doc = "luarocks.cmd.doc",
download = "luarocks.cmd.download",
help = "luarocks.cmd.help",
init = "luarocks.cmd.init",
install = "luarocks.cmd.install",
search = "luarocks.cmd.search",
lint = "luarocks.cmd.lint",
list = "luarocks.cmd.list",
remove = "luarocks.cmd.remove",
show = "luarocks.cmd.show",
make = "luarocks.cmd.make",
make_manifest = "luarocks.admin.cmd.make_manifest",
new_version = "luarocks.cmd.new_version",
pack = "luarocks.cmd.pack",
unpack = "luarocks.cmd.unpack",
doc = "luarocks.cmd.doc",
help = "luarocks.cmd.help",
purge = "luarocks.cmd.purge",
remove = "luarocks.cmd.remove",
search = "luarocks.cmd.search",
show = "luarocks.cmd.show",
test = "luarocks.cmd.test",
make_manifest = "luarocks.admin.cmd.make_manifest",
unpack = "luarocks.cmd.unpack",
which = "luarocks.cmd.which",
write_rockspec = "luarocks.cmd.write_rockspec",
}

if keyword_arguments.chdir then
ffi.C.chdir(keyword_arguments.chdir)
end
-- Call LuaRocks
command_line.run_command('', rocks_commands, nil, unpack(positional_arguments))
-- Prepare arguments for luarocks.
shift_argv(lua_arguments, 0, 1)
-- Call LuaRocks.
command_line.run_command('LuaRocks main command-line interface',
rocks_commands, nil, unpack(lua_arguments))
end

local function exit_wrapper(func)
Expand Down Expand Up @@ -1186,117 +1186,20 @@ local commands = setmetatable({
}, rocks = {
func = exit_wrapper(rocks), process = process_remote, help = {
header =
"%s rocks [install|make|remove|show|search|list|pack|unpack|doc|test|make_manifest|help]",
"%s rocks [OPTIONS] COMMAND",
description =
[=[
Package management.
Tarantool package manager. To pack/unpack/install/remove
LuaRocks packages, and many more other actions. For more
information see
tarantoolctl rocks --help
]=],
weight = 100,
deprecated = false,
},
subcommands = {
install = {
weight = 100,
help = {
header = "%s rocks install {<rock>|<name> [<version>]}",
description = [=[
Install a rock.
]=],
}
},
make = {
weight = 101,
help = {
header = "%s rocks make [<rockspec>]",
description = [=[
Compile package in current directory using a rockspec.
]=],
}
},
remove = {
weight = 101,
help = {
header = "%s rocks remove <name> [<version>]",
description = [=[
Uninstall a rock.
]=],
}
},
show = {
weight = 110,
help = {
header = "%s rocks list <filter>",
description = [=[
Show information about an installed rock
]=],
}
},
search = {
weight = 120,
help = {
header = "%s rocks search <name> [<version>]",
description = [=[
Search the rocks list for a pattern.
]=],
}
},
list = {
weight = 121,
help = {
header = "%s rocks list <filter>",
description = [=[
List all installed rocks.
]=],
}
},
pack = {
weight = 131,
help = {
header = "%s rocks pack {<rockspec>|<name> [<version>]}",
description = [=[
Create a rock, packing sources or binaries.
]=],
}
},
unpack = {
weight = 131,
help = {
header = "%s rocks unpack {<rock>|<name> [<version>]}",
description = [=[
Unpack the contents of a rock.
]=],
}
},
test = {
weight = 141,
help = {
header = "%s rocks test [<rockspec>]",
description = [=[
Run the test suite in the current directory.
]=],
}
},
doc = {
weight = 151,
help = {
header = "%s rocks doc <rockname>",
description = [=[
Show documentation for an installed rock.
]=],
}
},
make_manifest = {
weight = 161,
help = {
header = "%s rocks make_manifest <argument>",
description = [=[
Compile a manifest file for a repository.
<argument>, if given, is a local repository pathname.
]=],
}
},
}
-- LuaRocks parse arguments themselves
is_self_sufficient = true
}
}, {
__index = function()
Expand Down Expand Up @@ -1396,9 +1299,6 @@ local function populate_arguments()
{ 'help', 'boolean' },
{ 'format', 'string' },
{ 'replica', 'number+' },
{ 'chdir', 'string' },
{ 'only-server', 'string' },
{ 'server', 'string' },
{ 'language', 'string' },
})

Expand All @@ -1411,8 +1311,15 @@ local function populate_arguments()
end

local function main()
populate_arguments()

local cmd_pair = commands[command_name]

-- Don't call populate arguments() for modules
-- that parse arguments themselves.
if not cmd_pair.is_self_sufficient then
populate_arguments()
end

if #arg < 2 then
log.error("Not enough arguments for '%s' command\n", command_name)
usage(command_name)
Expand Down
2 changes: 1 addition & 1 deletion third_party/luarocks

0 comments on commit 28a3b55

Please sign in to comment.