diff options
Diffstat (limited to 'src/luarocks/command_line.lua')
| -rw-r--r-- | src/luarocks/command_line.lua | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/src/luarocks/command_line.lua b/src/luarocks/command_line.lua index b3284534..1a8c0fe7 100644 --- a/src/luarocks/command_line.lua +++ b/src/luarocks/command_line.lua | |||
| @@ -27,20 +27,9 @@ local function die(message, exitcode) | |||
| 27 | os.exit(exitcode or cfg.errorcodes.UNSPECIFIED) | 27 | os.exit(exitcode or cfg.errorcodes.UNSPECIFIED) |
| 28 | end | 28 | end |
| 29 | 29 | ||
| 30 | local function replace_tree(flags, args, tree) | 30 | local function replace_tree(flags, tree) |
| 31 | tree = dir.normalize(tree) | 31 | tree = dir.normalize(tree) |
| 32 | flags["tree"] = tree | 32 | flags["tree"] = tree |
| 33 | local added = false | ||
| 34 | for i = 1, #args do | ||
| 35 | if args[i]:match("%-%-tree=") then | ||
| 36 | args[i] = "--tree="..tree | ||
| 37 | added = true | ||
| 38 | break | ||
| 39 | end | ||
| 40 | end | ||
| 41 | if not added then | ||
| 42 | args[#args + 1] = "--tree="..tree | ||
| 43 | end | ||
| 44 | path.use_tree(tree) | 33 | path.use_tree(tree) |
| 45 | end | 34 | end |
| 46 | 35 | ||
| @@ -78,7 +67,6 @@ function command_line.run_command(...) | |||
| 78 | if flags["to"] then flags["tree"] = flags["to"] end | 67 | if flags["to"] then flags["tree"] = flags["to"] end |
| 79 | if flags["nodeps"] then | 68 | if flags["nodeps"] then |
| 80 | flags["deps-mode"] = "none" | 69 | flags["deps-mode"] = "none" |
| 81 | table.insert(args, "--deps-mode=none") | ||
| 82 | end | 70 | end |
| 83 | 71 | ||
| 84 | cfg.flags = flags | 72 | cfg.flags = flags |
| @@ -106,15 +94,8 @@ function command_line.run_command(...) | |||
| 106 | os.exit(cfg.errorcodes.OK) | 94 | os.exit(cfg.errorcodes.OK) |
| 107 | elseif flags["help"] or #nonflags == 0 then | 95 | elseif flags["help"] or #nonflags == 0 then |
| 108 | command = "help" | 96 | command = "help" |
| 109 | args = nonflags | ||
| 110 | else | 97 | else |
| 111 | command = nonflags[1] | 98 | command = table.remove(nonflags, 1) |
| 112 | for i, arg in ipairs(args) do | ||
| 113 | if arg == command then | ||
| 114 | table.remove(args, i) | ||
| 115 | break | ||
| 116 | end | ||
| 117 | end | ||
| 118 | end | 99 | end |
| 119 | command = command:gsub("-", "_") | 100 | command = command:gsub("-", "_") |
| 120 | 101 | ||
| @@ -137,14 +118,14 @@ function command_line.run_command(...) | |||
| 137 | if not tree.root then | 118 | if not tree.root then |
| 138 | die("Configuration error: tree '"..tree.name.."' has no 'root' field.") | 119 | die("Configuration error: tree '"..tree.name.."' has no 'root' field.") |
| 139 | end | 120 | end |
| 140 | replace_tree(flags, args, tree.root) | 121 | replace_tree(flags, tree.root) |
| 141 | named = true | 122 | named = true |
| 142 | break | 123 | break |
| 143 | end | 124 | end |
| 144 | end | 125 | end |
| 145 | if not named then | 126 | if not named then |
| 146 | local root_dir = fs.absolute_name(flags["tree"]) | 127 | local root_dir = fs.absolute_name(flags["tree"]) |
| 147 | replace_tree(flags, args, root_dir) | 128 | replace_tree(flags, root_dir) |
| 148 | end | 129 | end |
| 149 | elseif flags["local"] then | 130 | elseif flags["local"] then |
| 150 | if not cfg.home_tree then | 131 | if not cfg.home_tree then |
| @@ -152,7 +133,7 @@ function command_line.run_command(...) | |||
| 152 | "You are running as a superuser, which is intended for system-wide operation.\n".. | 133 | "You are running as a superuser, which is intended for system-wide operation.\n".. |
| 153 | "To force using the superuser's home, use --tree explicitly.") | 134 | "To force using the superuser's home, use --tree explicitly.") |
| 154 | end | 135 | end |
| 155 | replace_tree(flags, args, cfg.home_tree) | 136 | replace_tree(flags, cfg.home_tree) |
| 156 | else | 137 | else |
| 157 | local trees = cfg.rocks_trees | 138 | local trees = cfg.rocks_trees |
| 158 | path.use_tree(trees[#trees]) | 139 | path.use_tree(trees[#trees]) |
| @@ -195,14 +176,8 @@ function command_line.run_command(...) | |||
| 195 | end | 176 | end |
| 196 | 177 | ||
| 197 | if commands[command] then | 178 | if commands[command] then |
| 198 | -- TODO the interface of run should be modified, to receive the | ||
| 199 | -- flags table and the (possibly unpacked) nonflags arguments. | ||
| 200 | -- This would remove redundant parsing of arguments. | ||
| 201 | -- I'm not changing this now to avoid messing with the run() | ||
| 202 | -- interface, which I know some people use (even though | ||
| 203 | -- I never published it as a public API...) | ||
| 204 | local cmd = require(commands[command]) | 179 | local cmd = require(commands[command]) |
| 205 | local xp, ok, err, exitcode = xpcall(function() return cmd.run(unpack(args)) end, function(err) | 180 | local xp, ok, err, exitcode = xpcall(function() return cmd.command(flags, unpack(nonflags)) end, function(err) |
| 206 | die(debug.traceback("LuaRocks "..cfg.program_version | 181 | die(debug.traceback("LuaRocks "..cfg.program_version |
| 207 | .." bug (please report at https://github.com/keplerproject/luarocks/issues).\n" | 182 | .." bug (please report at https://github.com/keplerproject/luarocks/issues).\n" |
| 208 | ..err, 2), cfg.errorcodes.CRASH) | 183 | ..err, 2), cfg.errorcodes.CRASH) |
