aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhisham <hisham@9ca3f7c1-7366-0410-b1a3-b5c78f85698c>2009-07-01 15:36:58 +0000
committerhisham <hisham@9ca3f7c1-7366-0410-b1a3-b5c78f85698c>2009-07-01 15:36:58 +0000
commit6d045abb61a68e573cefb63b32c3bd85c7b6249e (patch)
tree8dd124f68c7eb684d026fe713e44bddf1a56c6ae /src
parentabfc6b6ca8cbf492c5e8b5ff3434b92f69076125 (diff)
downloadluarocks-6d045abb61a68e573cefb63b32c3bd85c7b6249e.tar.gz
luarocks-6d045abb61a68e573cefb63b32c3bd85c7b6249e.tar.bz2
luarocks-6d045abb61a68e573cefb63b32c3bd85c7b6249e.zip
progress on management of 'lib' dir
git-svn-id: http://luarocks.org/svn/luarocks/trunk@37 9ca3f7c1-7366-0410-b1a3-b5c78f85698c
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/manif.lua60
1 files changed, 50 insertions, 10 deletions
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua
index 6974dc04..74289ee5 100644
--- a/src/luarocks/manif.lua
+++ b/src/luarocks/manif.lua
@@ -13,22 +13,59 @@ local fetch = require("luarocks.fetch")
13local dir = require("luarocks.dir") 13local dir = require("luarocks.dir")
14local manif_core = require("luarocks.manif_core") 14local manif_core = require("luarocks.manif_core")
15 15
16local function find_module_at_file(file, modules)
17 for module, location in pairs(modules) do
18 if file == location then
19 return module
20 end
21 end
22end
23
24local function rename_module(file, pkgid)
25 local path = dir.dir_name(file)
26 local name = dir.base_name(file)
27 local pkgid = pkgid:gsub("[/.-]", "_")
28 return dir.path(path, pkgid.."-"..name)
29end
30
16local function make_global_lib(repo, manifest) 31local function make_global_lib(repo, manifest)
17 local lib_dir = dir.path(dir.dir_name(repo), "lib") 32 local lib_dir = dir.path(dir.dir_name(repo), "lib")
18 fs.make_dir(lib_dir) 33 fs.make_dir(lib_dir)
19 for rock, modules in pairs(manifest.modules) do 34 for rock, modules in pairs(manifest.modules) do
20 for module, file in pairs(modules) do 35 for module, file in pairs(modules) do
21 local path_in_rock = dir.strip_base_dir(file:sub(#dir.path(repo, module)+2)) 36 if not file:match("^"..lib_dir) then
22 local module_dir = dir.dir_name(path_in_rock) 37 local path_in_rock = dir.strip_base_dir(file:sub(#dir.path(repo, module)+2))
23 local dest = dir.path(lib_dir, path_in_rock) 38 local module_dir = dir.dir_name(path_in_rock)
24 if module_dir ~= "" then 39 local dest = dir.path(lib_dir, path_in_rock)
25 fs.make_dir(dir.dir_name(dest)) 40 if module_dir ~= "" then
26 end 41 fs.make_dir(dir.dir_name(dest))
27 if not fs.exists(dest) then 42 end
28 fs.copy(file, dest) 43 if not fs.exists(dest) then
29 manifest.modules[rock][module] = dest 44 fs.copy(file, dest)
45 manifest.modules[rock][module] = dest
46 else
47 local current = find_module_at_file(dest, modules)
48 if not current then
49 util.warning("installed file not tracked by LuaRocks: "..dest)
50 else
51 local newname = rename_module(dest, current)
52 if fs.exists(newname) then
53 util.warning("conflict when tracking modules: "..newname.." exists.")
54 else
55 local ok, err = fs.move(dest, newname)
56 if ok then
57 manifest.modules[rock][current] = newname
58 fs.copy(file, dest)
59 manifest.modules[rock][module] = dest
60 else
61 util.warning(err)
62 end
63 end
64 end
65 -- TODO
66 end
30 else 67 else
31 -- TODO 68 print("DBG file already in place.")
32 end 69 end
33 end 70 end
34 end 71 end
@@ -262,6 +299,9 @@ function make_manifest(repo)
262 local manifest = { repository = {}, modules = {}, commands = {} } 299 local manifest = { repository = {}, modules = {}, commands = {} }
263 manif_core.manifest_cache[repo] = manifest 300 manif_core.manifest_cache[repo] = manifest
264 store_results(results, manifest) 301 store_results(results, manifest)
302 local lib_dir = dir.path(dir.dir_name(repo), "lib")
303 -- TODO
304 fs.delete(lib_dir)
265 make_global_lib(repo, manifest) 305 make_global_lib(repo, manifest)
266 return save_manifest(repo, manifest) 306 return save_manifest(repo, manifest)
267end 307end