diff options
| author | hisham <hisham@9ca3f7c1-7366-0410-b1a3-b5c78f85698c> | 2009-10-05 18:22:37 +0000 |
|---|---|---|
| committer | hisham <hisham@9ca3f7c1-7366-0410-b1a3-b5c78f85698c> | 2009-10-05 18:22:37 +0000 |
| commit | 5e3256ced6d08a72438db6a0374f8cf7b68db55a (patch) | |
| tree | 70ea064f38582fd48fc1776c3424347b72c250e2 | |
| parent | 989701b2ed22b2479a7df8a5252951e53622dd31 (diff) | |
| download | luarocks-5e3256ced6d08a72438db6a0374f8cf7b68db55a.tar.gz luarocks-5e3256ced6d08a72438db6a0374f8cf7b68db55a.tar.bz2 luarocks-5e3256ced6d08a72438db6a0374f8cf7b68db55a.zip | |
pack deployed files using rock_manifest
git-svn-id: http://luarocks.org/svn/luarocks/trunk@68 9ca3f7c1-7366-0410-b1a3-b5c78f85698c
| -rw-r--r-- | src/luarocks/pack.lua | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/src/luarocks/pack.lua b/src/luarocks/pack.lua index e4dc1794..2fa12d9b 100644 --- a/src/luarocks/pack.lua +++ b/src/luarocks/pack.lua | |||
| @@ -56,6 +56,25 @@ local function pack_source_rock(rockspec_file) | |||
| 56 | return rock_file | 56 | return rock_file |
| 57 | end | 57 | end |
| 58 | 58 | ||
| 59 | local function copy_back_files(name, version, file_tree, deploy_dir, pack_dir) | ||
| 60 | fs.make_dir(pack_dir) | ||
| 61 | for file, sub in pairs(file_tree) do | ||
| 62 | local source = dir.path(deploy_dir, file) | ||
| 63 | local target = dir.path(pack_dir, file) | ||
| 64 | if type(sub) == "table" then | ||
| 65 | local ok, err = copy_back_files(name, version, sub, source, target) | ||
| 66 | else | ||
| 67 | local versioned = path.versioned_name(source, name, version) | ||
| 68 | if fs.exists(versioned) then | ||
| 69 | fs.copy(versioned, target) | ||
| 70 | else | ||
| 71 | fs.copy(source, target) | ||
| 72 | end | ||
| 73 | end | ||
| 74 | end | ||
| 75 | return true | ||
| 76 | end | ||
| 77 | |||
| 59 | -- @param name string: Name of package to pack. | 78 | -- @param name string: Name of package to pack. |
| 60 | -- @param version string or nil: A version number may also be passed. | 79 | -- @param version string or nil: A version number may also be passed. |
| 61 | -- @return string or (nil, string): The filename of the resulting | 80 | -- @return string or (nil, string): The filename of the resulting |
| @@ -83,33 +102,23 @@ local function pack_binary_rock(name, version) | |||
| 83 | return nil, "'"..name.." "..version.."' does not seem to be an installed rock." | 102 | return nil, "'"..name.." "..version.."' does not seem to be an installed rock." |
| 84 | end | 103 | end |
| 85 | 104 | ||
| 105 | local rock_manifest = manif.load_rock_manifest(name, version) | ||
| 106 | if not rock_manifest then | ||
| 107 | return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" | ||
| 108 | end | ||
| 109 | |||
| 86 | local name_version = name .. "-" .. version | 110 | local name_version = name .. "-" .. version |
| 87 | local rock_file = fs.absolute_name(name_version .. "."..cfg.arch..".rock") | 111 | local rock_file = fs.absolute_name(name_version .. "."..cfg.arch..".rock") |
| 88 | 112 | ||
| 89 | local temp_dir = fs.make_temp_dir("pack") | 113 | local temp_dir = fs.make_temp_dir("pack") |
| 90 | fs.copy_contents(prefix, temp_dir) | 114 | fs.copy_contents(prefix, temp_dir) |
| 91 | 115 | ||
| 92 | local is_binary = false | 116 | if rock_manifest.lib then |
| 93 | local manifest = manif.load_manifest(cfg.rocks_dir) | 117 | copy_back_files(name, version, rock_manifest.lib, cfg.deploy_lib_dir, dir.path(temp_dir, "lib")) |
| 94 | for module_name, module_data in pairs(manifest.modules) do | 118 | is_binary = true |
| 95 | for package, file in pairs(module_data) do | 119 | end |
| 96 | if package == name.."/"..version then | 120 | if rock_manifest.lua then |
| 97 | local dest | 121 | copy_back_files(name, version, rock_manifest.lua, cfg.deploy_lua_dir, dir.path(temp_dir, "lua")) |
| 98 | print("TODO LR2 do this based on rock_manifest") | ||
| 99 | if file:match("^"..cfg.deploy_lua_dir) then | ||
| 100 | local pathname = file:sub(#cfg.deploy_lua_dir + 1) | ||
| 101 | dest = dir.path(temp_dir, "lua", dir.dir_name(pathname)) | ||
| 102 | elseif file:match("^"..cfg.deploy_lib_dir) then | ||
| 103 | local pathname = file:sub(#cfg.deploy_lib_dir + 1) | ||
| 104 | dest = dir.path(temp_dir, "lib", dir.dir_name(pathname)) | ||
| 105 | is_binary = true | ||
| 106 | end | ||
| 107 | if dest then | ||
| 108 | fs.make_dir(dest) | ||
| 109 | fs.copy(file, dest) | ||
| 110 | end | ||
| 111 | end | ||
| 112 | end | ||
| 113 | end | 122 | end |
| 114 | 123 | ||
| 115 | fs.change_dir(temp_dir) | 124 | fs.change_dir(temp_dir) |
