mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
This is an important refactor of the way documentation generation works
* Installs luarocks WITH it's executable (easy to install other rocks if necessary) * Use Lua supplied with luarocks * Create Utils/luadocumentor.bat, which works with RELATIVE PATH ! -> Everybody can generate the doc * Updated launch files accordingly
This commit is contained in:
55
Utils/luarocks/lua/luarocks/fetch/cvs.lua
Normal file
55
Utils/luarocks/lua/luarocks/fetch/cvs.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from CVS.
|
||||
local cvs = {}
|
||||
|
||||
local unpack = unpack or table.unpack
|
||||
|
||||
local fs = require("luarocks.fs")
|
||||
local dir = require("luarocks.dir")
|
||||
local util = require("luarocks.util")
|
||||
|
||||
--- Download sources for building a rock, using CVS.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function cvs.get_sources(rockspec, extract, dest_dir)
|
||||
assert(type(rockspec) == "table")
|
||||
assert(type(dest_dir) == "string" or not dest_dir)
|
||||
|
||||
local cvs_cmd = rockspec.variables.CVS
|
||||
local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS")
|
||||
if not ok then
|
||||
return nil, err_msg
|
||||
end
|
||||
|
||||
local name_version = rockspec.name .. "-" .. rockspec.version
|
||||
local module = rockspec.source.module or dir.base_name(rockspec.source.url)
|
||||
local command = {cvs_cmd, "-d"..rockspec.source.pathname, "export", module}
|
||||
if rockspec.source.tag then
|
||||
table.insert(command, 4, "-r")
|
||||
table.insert(command, 5, rockspec.source.tag)
|
||||
end
|
||||
local store_dir
|
||||
if not dest_dir then
|
||||
store_dir = fs.make_temp_dir(name_version)
|
||||
if not store_dir then
|
||||
return nil, "Failed creating temporary directory."
|
||||
end
|
||||
util.schedule_function(fs.delete, store_dir)
|
||||
else
|
||||
store_dir = dest_dir
|
||||
end
|
||||
local ok, err = fs.change_dir(store_dir)
|
||||
if not ok then return nil, err end
|
||||
if not fs.execute(unpack(command)) then
|
||||
return nil, "Failed fetching files from CVS."
|
||||
end
|
||||
fs.pop_dir()
|
||||
return module, store_dir
|
||||
end
|
||||
|
||||
|
||||
return cvs
|
||||
92
Utils/luarocks/lua/luarocks/fetch/git.lua
Normal file
92
Utils/luarocks/lua/luarocks/fetch/git.lua
Normal file
@@ -0,0 +1,92 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from GIT.
|
||||
local git = {}
|
||||
|
||||
local unpack = unpack or table.unpack
|
||||
|
||||
local fs = require("luarocks.fs")
|
||||
local dir = require("luarocks.dir")
|
||||
local util = require("luarocks.util")
|
||||
|
||||
--- Git >= 1.7.10 can clone a branch **or tag**, < 1.7.10 by branch only. We
|
||||
-- need to know this in order to build the appropriate command; if we can't
|
||||
-- clone by tag then we'll have to issue a subsequent command to check out the
|
||||
-- given tag.
|
||||
-- @return boolean: Whether Git can clone by tag.
|
||||
local function git_can_clone_by_tag(git_cmd)
|
||||
local version_string = io.popen(fs.Q(git_cmd)..' --version'):read()
|
||||
local major, minor, tiny = version_string:match('(%d-)%.(%d+)%.?(%d*)')
|
||||
major, minor, tiny = tonumber(major), tonumber(minor), tonumber(tiny) or 0
|
||||
local value = major > 1 or (major == 1 and (minor > 7 or (minor == 7 and tiny >= 10)))
|
||||
git_can_clone_by_tag = function() return value end
|
||||
return value
|
||||
end
|
||||
|
||||
--- Download sources for building a rock, using git.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function git.get_sources(rockspec, extract, dest_dir, depth)
|
||||
assert(type(rockspec) == "table")
|
||||
assert(type(dest_dir) == "string" or not dest_dir)
|
||||
|
||||
local git_cmd = rockspec.variables.GIT
|
||||
local name_version = rockspec.name .. "-" .. rockspec.version
|
||||
local module = dir.base_name(rockspec.source.url)
|
||||
-- Strip off .git from base name if present
|
||||
module = module:gsub("%.git$", "")
|
||||
|
||||
local ok, err_msg = fs.is_tool_available(git_cmd, "Git")
|
||||
if not ok then
|
||||
return nil, err_msg
|
||||
end
|
||||
|
||||
local store_dir
|
||||
if not dest_dir then
|
||||
store_dir = fs.make_temp_dir(name_version)
|
||||
if not store_dir then
|
||||
return nil, "Failed creating temporary directory."
|
||||
end
|
||||
util.schedule_function(fs.delete, store_dir)
|
||||
else
|
||||
store_dir = dest_dir
|
||||
end
|
||||
store_dir = fs.absolute_name(store_dir)
|
||||
local ok, err = fs.change_dir(store_dir)
|
||||
if not ok then return nil, err end
|
||||
|
||||
local command = {fs.Q(git_cmd), "clone", depth or "--depth=1", rockspec.source.url, module}
|
||||
local tag_or_branch = rockspec.source.tag or rockspec.source.branch
|
||||
-- If the tag or branch is explicitly set to "master" in the rockspec, then
|
||||
-- we can avoid passing it to Git since it's the default.
|
||||
if tag_or_branch == "master" then tag_or_branch = nil end
|
||||
if tag_or_branch then
|
||||
if git_can_clone_by_tag(git_cmd) then
|
||||
-- The argument to `--branch` can actually be a branch or a tag as of
|
||||
-- Git 1.7.10.
|
||||
table.insert(command, 3, "--branch=" .. tag_or_branch)
|
||||
end
|
||||
end
|
||||
if not fs.execute(unpack(command)) then
|
||||
return nil, "Failed cloning git repository."
|
||||
end
|
||||
ok, err = fs.change_dir(module)
|
||||
if not ok then return nil, err end
|
||||
if tag_or_branch and not git_can_clone_by_tag() then
|
||||
local checkout_command = {fs.Q(git_cmd), "checkout", tag_or_branch}
|
||||
if not fs.execute(unpack(checkout_command)) then
|
||||
return nil, 'Failed to check out the "' .. tag_or_branch ..'" tag or branch.'
|
||||
end
|
||||
end
|
||||
|
||||
fs.delete(dir.path(store_dir, module, ".git"))
|
||||
fs.delete(dir.path(store_dir, module, ".gitignore"))
|
||||
fs.pop_dir()
|
||||
fs.pop_dir()
|
||||
return module, store_dir
|
||||
end
|
||||
|
||||
return git
|
||||
19
Utils/luarocks/lua/luarocks/fetch/git_file.lua
Normal file
19
Utils/luarocks/lua/luarocks/fetch/git_file.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from local Git repositories.
|
||||
local git_file = {}
|
||||
|
||||
local git = require("luarocks.fetch.git")
|
||||
|
||||
--- Fetch sources for building a rock from a local Git repository.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function git_file.get_sources(rockspec, extract, dest_dir)
|
||||
rockspec.source.url = rockspec.source.url:gsub("^git.file://", "")
|
||||
return git.get_sources(rockspec, extract, dest_dir)
|
||||
end
|
||||
|
||||
return git_file
|
||||
26
Utils/luarocks/lua/luarocks/fetch/git_http.lua
Normal file
26
Utils/luarocks/lua/luarocks/fetch/git_http.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from Git repositories
|
||||
-- that use http:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `git clone http://example.com/foo.git`
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "git+http://example.com/foo.git" }
|
||||
-- Prefer using the normal git:// fetch mode as it is more widely
|
||||
-- available in older versions of LuaRocks.
|
||||
local git_http = {}
|
||||
|
||||
local git = require("luarocks.fetch.git")
|
||||
|
||||
--- Fetch sources for building a rock from a local Git repository.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function git_http.get_sources(rockspec, extract, dest_dir)
|
||||
rockspec.source.url = rockspec.source.url:gsub("^git.", "")
|
||||
return git.get_sources(rockspec, extract, dest_dir, "--")
|
||||
end
|
||||
|
||||
return git_http
|
||||
7
Utils/luarocks/lua/luarocks/fetch/git_https.lua
Normal file
7
Utils/luarocks/lua/luarocks/fetch/git_https.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
--- Fetch back-end for retrieving sources from Git repositories
|
||||
-- that use https:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `git clone https://example.com/foo.git`
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "git+https://example.com/foo.git" }
|
||||
return require "luarocks.fetch.git_http"
|
||||
32
Utils/luarocks/lua/luarocks/fetch/git_ssh.lua
Normal file
32
Utils/luarocks/lua/luarocks/fetch/git_ssh.lua
Normal file
@@ -0,0 +1,32 @@
|
||||
--- Fetch back-end for retrieving sources from Git repositories
|
||||
-- that use ssh:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `git clone ssh://git@example.com/path/foo.git
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "git+ssh://git@example.com/path/foo.git" }
|
||||
-- It also handles scp-style ssh urls: git@example.com:path/foo.git,
|
||||
-- but you have to prepend the "git+ssh://" and why not use the "newer"
|
||||
-- style anyway?
|
||||
local git_ssh = {}
|
||||
|
||||
local git = require("luarocks.fetch.git")
|
||||
|
||||
--- Fetch sources for building a rock from a local Git repository.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function git_ssh.get_sources(rockspec, extract, dest_dir)
|
||||
rockspec.source.url = rockspec.source.url:gsub("^git.", "")
|
||||
|
||||
-- Handle old-style scp-like git ssh urls
|
||||
if rockspec.source.url:match("^ssh://[^/]+:[^%d]") then
|
||||
rockspec.source.url = rockspec.source.url:gsub("^ssh://", "")
|
||||
end
|
||||
|
||||
return git.get_sources(rockspec, extract, dest_dir, "--")
|
||||
end
|
||||
|
||||
return git_ssh
|
||||
65
Utils/luarocks/lua/luarocks/fetch/hg.lua
Normal file
65
Utils/luarocks/lua/luarocks/fetch/hg.lua
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from HG.
|
||||
local hg = {}
|
||||
|
||||
local unpack = unpack or table.unpack
|
||||
|
||||
local fs = require("luarocks.fs")
|
||||
local dir = require("luarocks.dir")
|
||||
local util = require("luarocks.util")
|
||||
|
||||
--- Download sources for building a rock, using hg.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function hg.get_sources(rockspec, extract, dest_dir)
|
||||
assert(type(rockspec) == "table")
|
||||
assert(type(dest_dir) == "string" or not dest_dir)
|
||||
|
||||
local hg_cmd = rockspec.variables.HG
|
||||
local ok, err_msg = fs.is_tool_available(hg_cmd, "Mercurial")
|
||||
if not ok then
|
||||
return nil, err_msg
|
||||
end
|
||||
|
||||
local name_version = rockspec.name .. "-" .. rockspec.version
|
||||
-- Strip off special hg:// protocol type
|
||||
local url = rockspec.source.url:gsub("^hg://", "")
|
||||
|
||||
local module = dir.base_name(url)
|
||||
|
||||
local command = {hg_cmd, "clone", url, module}
|
||||
local tag_or_branch = rockspec.source.tag or rockspec.source.branch
|
||||
if tag_or_branch then
|
||||
command = {hg_cmd, "clone", "--rev", tag_or_branch, url, module}
|
||||
end
|
||||
local store_dir
|
||||
if not dest_dir then
|
||||
store_dir = fs.make_temp_dir(name_version)
|
||||
if not store_dir then
|
||||
return nil, "Failed creating temporary directory."
|
||||
end
|
||||
util.schedule_function(fs.delete, store_dir)
|
||||
else
|
||||
store_dir = dest_dir
|
||||
end
|
||||
local ok, err = fs.change_dir(store_dir)
|
||||
if not ok then return nil, err end
|
||||
if not fs.execute(unpack(command)) then
|
||||
return nil, "Failed cloning hg repository."
|
||||
end
|
||||
ok, err = fs.change_dir(module)
|
||||
if not ok then return nil, err end
|
||||
|
||||
fs.delete(dir.path(store_dir, module, ".hg"))
|
||||
fs.delete(dir.path(store_dir, module, ".hgignore"))
|
||||
fs.pop_dir()
|
||||
fs.pop_dir()
|
||||
return module, store_dir
|
||||
end
|
||||
|
||||
|
||||
return hg
|
||||
24
Utils/luarocks/lua/luarocks/fetch/hg_http.lua
Normal file
24
Utils/luarocks/lua/luarocks/fetch/hg_http.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from hg repositories
|
||||
-- that use http:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `hg clone http://example.com/foo`
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "hg+http://example.com/foo" }
|
||||
local hg_http = {}
|
||||
|
||||
local hg = require("luarocks.fetch.hg")
|
||||
|
||||
--- Download sources for building a rock, using hg over http.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function hg_http.get_sources(rockspec, extract, dest_dir)
|
||||
rockspec.source.url = rockspec.source.url:gsub("^hg.", "")
|
||||
return hg.get_sources(rockspec, extract, dest_dir)
|
||||
end
|
||||
|
||||
return hg_http
|
||||
8
Utils/luarocks/lua/luarocks/fetch/hg_https.lua
Normal file
8
Utils/luarocks/lua/luarocks/fetch/hg_https.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from hg repositories
|
||||
-- that use https:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `hg clone https://example.com/foo`
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "hg+https://example.com/foo" }
|
||||
return require "luarocks.fetch.hg_http"
|
||||
8
Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua
Normal file
8
Utils/luarocks/lua/luarocks/fetch/hg_ssh.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from hg repositories
|
||||
-- that use ssh:// transport. For example, for fetching a repository
|
||||
-- that requires the following command line:
|
||||
-- `hg clone ssh://example.com/foo`
|
||||
-- you can use this in the rockspec:
|
||||
-- source = { url = "hg+ssh://example.com/foo" }
|
||||
return require "luarocks.fetch.hg_http"
|
||||
44
Utils/luarocks/lua/luarocks/fetch/sscm.lua
Normal file
44
Utils/luarocks/lua/luarocks/fetch/sscm.lua
Normal file
@@ -0,0 +1,44 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from Surround SCM Server
|
||||
local sscm = {}
|
||||
|
||||
local fs = require("luarocks.fs")
|
||||
local dir = require("luarocks.dir")
|
||||
|
||||
--- Download sources via Surround SCM Server for building a rock.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function sscm.get_sources(rockspec, extract, dest_dir)
|
||||
assert(type(rockspec) == "table")
|
||||
assert(type(dest_dir) == "string" or not dest_dir)
|
||||
|
||||
local sscm_cmd = rockspec.variables.SSCM
|
||||
local module = rockspec.source.module or dir.base_name(rockspec.source.url)
|
||||
local branch, repository = string.match(rockspec.source.pathname, "^([^/]*)/(.*)")
|
||||
if not branch or not repository then
|
||||
return nil, "Error retrieving branch and repository from rockspec."
|
||||
end
|
||||
-- Search for working directory.
|
||||
local working_dir
|
||||
local tmp = io.popen(string.format(sscm_cmd..[[ property "/" -d -b%s -p%s]], branch, repository))
|
||||
for line in tmp:lines() do
|
||||
--%c because a chr(13) comes in the end.
|
||||
working_dir = string.match(line, "Working directory:[%s]*(.*)%c$")
|
||||
if working_dir then break end
|
||||
end
|
||||
tmp:close()
|
||||
if not working_dir then
|
||||
return nil, "Error retrieving working directory from SSCM."
|
||||
end
|
||||
if not fs.execute(sscm_cmd, "get", "*", "-e" , "-r", "-b"..branch, "-p"..repository, "-tmodify", "-wreplace") then
|
||||
return nil, "Failed fetching files from SSCM."
|
||||
end
|
||||
-- FIXME: This function does not honor the dest_dir parameter.
|
||||
return module, working_dir
|
||||
end
|
||||
|
||||
return sscm
|
||||
64
Utils/luarocks/lua/luarocks/fetch/svn.lua
Normal file
64
Utils/luarocks/lua/luarocks/fetch/svn.lua
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
--- Fetch back-end for retrieving sources from Subversion.
|
||||
local svn = {}
|
||||
|
||||
local unpack = unpack or table.unpack
|
||||
|
||||
local fs = require("luarocks.fs")
|
||||
local dir = require("luarocks.dir")
|
||||
local util = require("luarocks.util")
|
||||
|
||||
--- Download sources for building a rock, using Subversion.
|
||||
-- @param rockspec table: The rockspec table
|
||||
-- @param extract boolean: Unused in this module (required for API purposes.)
|
||||
-- @param dest_dir string or nil: If set, will extract to the given directory.
|
||||
-- @return (string, string) or (nil, string): The absolute pathname of
|
||||
-- the fetched source tarball and the temporary directory created to
|
||||
-- store it; or nil and an error message.
|
||||
function svn.get_sources(rockspec, extract, dest_dir)
|
||||
assert(type(rockspec) == "table")
|
||||
assert(type(dest_dir) == "string" or not dest_dir)
|
||||
|
||||
local svn_cmd = rockspec.variables.SVN
|
||||
local ok, err_msg = fs.is_tool_available(svn_cmd, "--version", "Subversion")
|
||||
if not ok then
|
||||
return nil, err_msg
|
||||
end
|
||||
|
||||
local name_version = rockspec.name .. "-" .. rockspec.version
|
||||
local module = rockspec.source.module or dir.base_name(rockspec.source.url)
|
||||
local url = rockspec.source.url:gsub("^svn://", "")
|
||||
local command = {svn_cmd, "checkout", url, module}
|
||||
if rockspec.source.tag then
|
||||
table.insert(command, 5, "-r")
|
||||
table.insert(command, 6, rockspec.source.tag)
|
||||
end
|
||||
local store_dir
|
||||
if not dest_dir then
|
||||
store_dir = fs.make_temp_dir(name_version)
|
||||
if not store_dir then
|
||||
return nil, "Failed creating temporary directory."
|
||||
end
|
||||
util.schedule_function(fs.delete, store_dir)
|
||||
else
|
||||
store_dir = dest_dir
|
||||
end
|
||||
local ok, err = fs.change_dir(store_dir)
|
||||
if not ok then return nil, err end
|
||||
if not fs.execute(unpack(command)) then
|
||||
return nil, "Failed fetching files from Subversion."
|
||||
end
|
||||
ok, err = fs.change_dir(module)
|
||||
if not ok then return nil, err end
|
||||
for _, d in ipairs(fs.find(".")) do
|
||||
if dir.base_name(d) == ".svn" then
|
||||
fs.delete(dir.path(store_dir, module, d))
|
||||
end
|
||||
end
|
||||
fs.pop_dir()
|
||||
fs.pop_dir()
|
||||
return module, store_dir
|
||||
end
|
||||
|
||||
|
||||
return svn
|
||||
Reference in New Issue
Block a user