File

tools/make_repo.lua @ 13095:1693bd4de283

core.sessionmanager: Delay closing a replaced connection after replacement Closing the session invokes ondisconnect and session close logic, including mod_smacks hibernation and the timer that destroys the session after a timeout. By closing the connection after it has been detached from the sessions table it will no longer invoke the ondetach handler, which should prevent the above problem.
author Kim Alvefur <zash@zash.se>
date Sun, 07 May 2023 12:27:55 +0200
parent 10177:e9b47fcde93c
line wrap: on
line source

print("Getting all the available modules")
if os.execute '[ -e "./downloaded_modules" ]' then
	os.execute("rm -rf downloaded_modules")
end
os.execute("hg clone https://hg.prosody.im/prosody-modules/ downloaded_modules")
local i, popen = 0, io.popen
local flag = "mod_"
if os.execute '[ -e "./repository" ]' then
	os.execute("mkdir repository")
end
local pfile = popen('ls -a "downloaded_modules"')
for filename in pfile:lines() do
	i = i + 1
	if filename:sub(1, #flag) == flag then
		local file = io.open("repository/"..filename.."-scm-1.rockspec", "w")
		file:write('package = "'..filename..'"', '\n')
		file:write('version = "scm-1"', '\n')
		file:write('source = {', '\n')
		file:write('\turl = "hg+https://hg.prosody.im/prosody-modules",', '\n')
		file:write('\tdir = "prosody-modules"', '\n')
		file:write('}', '\n')
		file:write('description = {', '\n')
		file:write('\thomepage = "https://prosody.im/",', '\n')
		file:write('\tlicense = "MIT"', '\n')
		file:write('}', '\n')
		file:write('dependencies = {', '\n')
		file:write('\t"lua >= 5.1"', '\n')
		file:write('}', '\n')
		file:write('build = {', '\n')
		file:write('\ttype = "builtin",', '\n')
		file:write('\tmodules = {', '\n')
		file:write('\t\t["'..filename..'.'..filename..'"] = "'..filename..'/'..filename..'.lua"', '\n')
		file:write('\t}', '\n')
		file:write('}', '\n')
		file:close()
	end
end
pfile:close()
os.execute("cd repository/ && luarocks-admin make_manifest ./ && chmod -R 644 ./*")
print("")
print("Done!. Modules' sources are locally available at ./downloaded_modules")
print("Repository is available at ./repository")
print("The repository contains all of prosody modules' respective rockspecs, as well as manifest files and an html Index")
print("You can now either point your server to this folder, or copy its contents to another configured folder.")