aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThijs Schreijer <thijs@thijsschreijer.nl>2013-11-19 11:55:44 +0100
committerThijs Schreijer <thijs@thijsschreijer.nl>2013-11-19 11:55:44 +0100
commit7f11f5fa1a08aef38ac6e8ede0e10e583619fa25 (patch)
treea585454e62c6f7dc81b9b7be406e59ce6a5adf33 /src
parent722c03ae8b059cba8039e8066dd1a82e7c3ddcb3 (diff)
parent827bdfd16adf324f118f843cb4d1eea94e887480 (diff)
downloadluarocks-7f11f5fa1a08aef38ac6e8ede0e10e583619fa25.tar.gz
luarocks-7f11f5fa1a08aef38ac6e8ede0e10e583619fa25.tar.bz2
luarocks-7f11f5fa1a08aef38ac6e8ede0e10e583619fa25.zip
Merge branch 'master' of https://github.com/keplerproject/luarocks into command_quoting
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/cfg.lua2
-rw-r--r--src/luarocks/manif.lua4
-rw-r--r--src/luarocks/path.lua12
-rw-r--r--src/luarocks/unpack.lua19
4 files changed, 26 insertions, 11 deletions
diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua
index e3d924fb..f66ad1d9 100644
--- a/src/luarocks/cfg.lua
+++ b/src/luarocks/cfg.lua
@@ -322,7 +322,7 @@ if detected.windows then
322 local localappdata = os.getenv("LOCALAPPDATA") 322 local localappdata = os.getenv("LOCALAPPDATA")
323 if not localappdata then 323 if not localappdata then
324 -- for Windows versions below Vista 324 -- for Windows versions below Vista
325 localappdata = os.getenv("USER_PROFILE").."/Local Settings/Application Data" 325 localappdata = os.getenv("USERPROFILE").."/Local Settings/Application Data"
326 end 326 end
327 defaults.local_cache = localappdata.."/LuaRocks/Cache" 327 defaults.local_cache = localappdata.."/LuaRocks/Cache"
328end 328end
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua
index 9feb35ce..1c7707a9 100644
--- a/src/luarocks/manif.lua
+++ b/src/luarocks/manif.lua
@@ -139,9 +139,11 @@ function load_manifest(repo_url)
139 if pathname:match(".*%.zip$") then 139 if pathname:match(".*%.zip$") then
140 local dir = dir.dir_name(pathname) 140 local dir = dir.dir_name(pathname)
141 fs.change_dir(dir) 141 fs.change_dir(dir)
142 local nozip = pathname:match("(.*)%.zip$")
143 fs.delete(nozip)
142 fs.unzip(pathname) 144 fs.unzip(pathname)
143 fs.pop_dir() 145 fs.pop_dir()
144 pathname = pathname:match("(.*)%.zip$") 146 pathname = nozip
145 end 147 end
146 return manif_core.manifest_loader(pathname, repo_url) 148 return manif_core.manifest_loader(pathname, repo_url)
147end 149end
diff --git a/src/luarocks/path.lua b/src/luarocks/path.lua
index f8ae15c0..d7273095 100644
--- a/src/luarocks/path.lua
+++ b/src/luarocks/path.lua
@@ -410,9 +410,17 @@ function run(...)
410 util.printout(util.remove_path_dupes(lr_bin, ';')) 410 util.printout(util.remove_path_dupes(lr_bin, ';'))
411 return true 411 return true
412 end 412 end
413
414 if flags["append"] then
415 lr_path = package.path .. ";" .. lr_path
416 lr_cpath = package.cpath .. ";" .. lr_cpath
417 else
418 lr_path = lr_path.. ";" .. package.path
419 lr_cpath = lr_cpath .. ";" .. package.cpath
420 end
413 421
414 util.printout(cfg.export_lua_path:format(util.remove_path_dupes(package.path, ';'))) 422 util.printout(cfg.export_lua_path:format(util.remove_path_dupes(lr_path, ';')))
415 util.printout(cfg.export_lua_cpath:format(util.remove_path_dupes(package.cpath, ';'))) 423 util.printout(cfg.export_lua_cpath:format(util.remove_path_dupes(lr_cpath, ';')))
416 if flags["bin"] then 424 if flags["bin"] then
417 table.insert(bin_dirs, 1, os.getenv("PATH")) 425 table.insert(bin_dirs, 1, os.getenv("PATH"))
418 local lr_bin = util.remove_path_dupes(table.concat(bin_dirs, cfg.export_path_separator), cfg.export_path_separator) 426 local lr_bin = util.remove_path_dupes(table.concat(bin_dirs, cfg.export_path_separator), cfg.export_path_separator)
diff --git a/src/luarocks/unpack.lua b/src/luarocks/unpack.lua
index 70c116fd..95762a2c 100644
--- a/src/luarocks/unpack.lua
+++ b/src/luarocks/unpack.lua
@@ -10,11 +10,13 @@ local build = require("luarocks.build")
10local dir = require("luarocks.dir") 10local dir = require("luarocks.dir")
11 11
12help_summary = "Unpack the contents of a rock." 12help_summary = "Unpack the contents of a rock."
13help_arguments = "{<rock>|<name> [<version>]}" 13help_arguments = "[--force] {<rock>|<name> [<version>]}"
14help = [[ 14help = [[
15Unpacks the contents of a rock in a newly created directory. 15Unpacks the contents of a rock in a newly created directory.
16Argument may be a rock file, or the name of a rock in a rocks server. 16Argument may be a rock file, or the name of a rock in a rocks server.
17In the latter case, the app version may be given as a second argument. 17In the latter case, the app version may be given as a second argument.
18
19--force Unpack files even if the output directory already exists.
18]] 20]]
19 21
20--- Load a rockspec file to the given directory, fetches the source 22--- Load a rockspec file to the given directory, fetches the source
@@ -88,7 +90,7 @@ end
88-- @param file string: A rockspec or .rock URL. 90-- @param file string: A rockspec or .rock URL.
89-- @return boolean or (nil, string): true if successful or nil followed 91-- @return boolean or (nil, string): true if successful or nil followed
90-- by an error message. 92-- by an error message.
91local function run_unpacker(file) 93local function run_unpacker(file, force)
92 assert(type(file) == "string") 94 assert(type(file) == "string")
93 95
94 local base_name = dir.base_name(file) 96 local base_name = dir.base_name(file)
@@ -100,12 +102,15 @@ local function run_unpacker(file)
100 if not extension then 102 if not extension then
101 return nil, file.." does not seem to be a valid filename." 103 return nil, file.." does not seem to be a valid filename."
102 end 104 end
103 105
104 if (fs.exists(dir_name)) then 106 local exists = fs.exists(dir_name)
107 if exists and not force then
105 return nil, "Directory "..dir_name.." already exists." 108 return nil, "Directory "..dir_name.." already exists."
106 end 109 end
107 local ok, err = fs.make_dir(dir_name) 110 if not exists then
108 if not ok then return nil, err end 111 local ok, err = fs.make_dir(dir_name)
112 if not ok then return nil, err end
113 end
109 local rollback = util.schedule_function(fs.delete, fs.absolute_name(dir_name)) 114 local rollback = util.schedule_function(fs.delete, fs.absolute_name(dir_name))
110 115
111 local rockspec, err 116 local rockspec, err
@@ -149,7 +154,7 @@ function run(...)
149 end 154 end
150 155
151 if name:match(".*%.rock") or name:match(".*%.rockspec") then 156 if name:match(".*%.rock") or name:match(".*%.rockspec") then
152 return run_unpacker(name) 157 return run_unpacker(name, flags["force"])
153 else 158 else
154 local search = require("luarocks.search") 159 local search = require("luarocks.search")
155 return search.act_on_src_or_rockspec(run_unpacker, name, version) 160 return search.act_on_src_or_rockspec(run_unpacker, name, version)