tools/make_repo.lua
author Kim Alvefur <zash@zash.se>
Sat, 23 Mar 2024 20:48:19 +0100
changeset 13465 c673ff1075bd
parent 10181 e9b47fcde93c
permissions -rw-r--r--
mod_posix: Move everything to util.startup This allows greater control over the order of events. Notably, the internal ordering between daemonization, initialization of libunbound and setup of signal handling is sensitive. libunbound starts a separate thread for processing DNS requests. If this thread is started before signal handling has been set up, it will not inherit the signal handlers and instead behave as it would have before signal handlers were set up, i.e. cause the whole process to immediately exit. libunbound is usually initialized on the first DNS request, usually triggered by an outgoing s2s connection attempt. If daemonization happens before signals have been set up, signals may not be processed at all.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10160
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     1
print("Getting all the available modules")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     2
if os.execute '[ -e "./downloaded_modules" ]' then
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     3
	os.execute("rm -rf downloaded_modules")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     4
end
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     5
os.execute("hg clone https://hg.prosody.im/prosody-modules/ downloaded_modules")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     6
local i, popen = 0, io.popen
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     7
local flag = "mod_"
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     8
if os.execute '[ -e "./repository" ]' then
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
     9
	os.execute("mkdir repository")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    10
end
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    11
local pfile = popen('ls -a "downloaded_modules"')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    12
for filename in pfile:lines() do
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    13
	i = i + 1
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    14
	if filename:sub(1, #flag) == flag then
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    15
		local file = io.open("repository/"..filename.."-scm-1.rockspec", "w")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    16
		file:write('package = "'..filename..'"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    17
		file:write('version = "scm-1"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    18
		file:write('source = {', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    19
		file:write('\turl = "hg+https://hg.prosody.im/prosody-modules",', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    20
		file:write('\tdir = "prosody-modules"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    21
		file:write('}', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    22
		file:write('description = {', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    23
		file:write('\thomepage = "https://prosody.im/",', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    24
		file:write('\tlicense = "MIT"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    25
		file:write('}', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    26
		file:write('dependencies = {', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    27
		file:write('\t"lua >= 5.1"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    28
		file:write('}', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    29
		file:write('build = {', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    30
		file:write('\ttype = "builtin",', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    31
		file:write('\tmodules = {', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    32
		file:write('\t\t["'..filename..'.'..filename..'"] = "'..filename..'/'..filename..'.lua"', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    33
		file:write('\t}', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    34
		file:write('}', '\n')
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    35
		file:close()
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    36
	end
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    37
end
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    38
pfile:close()
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    39
os.execute("cd repository/ && luarocks-admin make_manifest ./ && chmod -R 644 ./*")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    40
print("")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    41
print("Done!. Modules' sources are locally available at ./downloaded_modules")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    42
print("Repository is available at ./repository")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    43
print("The repository contains all of prosody modules' respective rockspecs, as well as manifest files and an html Index")
1797e2e22a38 make_repo: This script creates a repository with prosody plugins' rockspecs
João Duarte <jvsDuarte08@gmail.com>
parents:
diff changeset
    44
print("You can now either point your server to this folder, or copy its contents to another configured folder.")