[Tarantool-patches] [PATCH] rocks: forward options to luarocks
Leonid Vasiliev
lvasiliev at tarantool.org
Thu Mar 26 01:01:20 MSK 2020
From: Leonid <lvasiliev at tarantool.org>
https://github.com/tarantool/tarantool/issues/4629
https://github.com/tarantool/tarantool/tree/lvasiliev/gh-4629-forward-flags
Corresponding thread https://lists.tarantool.org/pipermail/tarantool-patches/2020-March/015143.html
@Changelog
Add tarantoolctl rocks commands: build config download init lint new_version purge which write_rockspec
Fix forwarding flags to luarocks
Help section has been updated
The policy for check of luarocks flags has been changed (moved from tarantoolctl to luarocks).
We had a white-list of luarocks options in tarantoolctl before.
Now we have a black-list of options (for tarantool) in luarocks.
Help section has been updated.
Chdir has been moved to luarocks.
@TarantoolBot document
Title: Update tarantoolctl rocks
tarantoolctl rocks commands has been added:
build
config
download
init
lint
new_version
purge
which
write_rockspec
Closes #4629
---
extra/dist/tarantoolctl.in | 157 ++++++++-------------------------------------
third_party/luarocks | 2 +-
2 files changed, 28 insertions(+), 131 deletions(-)
diff --git a/extra/dist/tarantoolctl.in b/extra/dist/tarantoolctl.in
index 6daf866..66dfec8 100755
--- a/extra/dist/tarantoolctl.in
+++ b/extra/dist/tarantoolctl.in
@@ -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
@@ -936,14 +935,6 @@ 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)
@@ -951,27 +942,36 @@ local function rocks()
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
+ --prepare arguments for luarocks
+ shift_argv(lua_arguments, 0, 1)
-- Call LuaRocks
- command_line.run_command('', rocks_commands, nil, unpack(positional_arguments))
+ command_line.run_command('LuaRocks main command-line interface',
+ rocks_commands, nil, unpack(lua_arguments))
end
local function exit_wrapper(func)
@@ -1186,117 +1186,14 @@ 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 - package managment",
description =
[=[
- Package management.
+ 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.
-]=],
- }
- },
- }
}
}, {
__index = function()
@@ -1396,9 +1293,6 @@ local function populate_arguments()
{ 'help', 'boolean' },
{ 'format', 'string' },
{ 'replica', 'number+' },
- { 'chdir', 'string' },
- { 'only-server', 'string' },
- { 'server', 'string' },
{ 'language', 'string' },
})
@@ -1411,7 +1305,10 @@ local function populate_arguments()
end
local function main()
- populate_arguments()
+ if command_name ~= 'rocks' then -- rocks parse arguments themselves
+ populate_arguments()
+ end
+
local cmd_pair = commands[command_name]
if #arg < 2 then
log.error("Not enough arguments for '%s' command\n", command_name)
diff --git a/third_party/luarocks b/third_party/luarocks
index 06a657e..ca51fbd 160000
--- a/third_party/luarocks
+++ b/third_party/luarocks
@@ -1 +1 @@
-Subproject commit 06a657e7a68dd475e2afb5a56012c43f3a906640
+Subproject commit ca51fbdac5eda88a87f44ec97dccf9b262a23c59
--
2.7.4
More information about the Tarantool-patches
mailing list