aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/utils/build-extensions-conf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/utils/build-extensions-conf.lua')
-rwxr-xr-xtrunk/utils/build-extensions-conf.lua81
1 files changed, 81 insertions, 0 deletions
diff --git a/trunk/utils/build-extensions-conf.lua b/trunk/utils/build-extensions-conf.lua
new file mode 100755
index 000000000..a3f159def
--- /dev/null
+++ b/trunk/utils/build-extensions-conf.lua
@@ -0,0 +1,81 @@
+#!/usr/bin/env lua
+--[[
+
+This utility can be used to generate an extensions.conf file to match an
+existing extensions.lua file. As an argument it takes the patch of the
+extensions.lua file to read from, otherwise it uses
+/etc/asterisk/extensions.lua.
+
+This script can also be used to automatically include extensions.lua in
+extensions.conf via a #exec as well.
+
+#exec /usr/bin/build-extensions-conf.lua -c
+
+--]]
+
+usage = [[
+
+Usage:
+ ]] .. arg[0] .. [[ [options] [extensions.lua path]
+
+This utility can generate an extensions.conf file with all of the contexts in
+your extensions.lua file defined as including the Lua switch. This is useful
+if you want to use your extensions.lua file exclusively. By using this utility
+you dont't have to create each extension in extensions.conf manually.
+
+The resulting extensions.conf file is printed to standard output.
+
+ --contexts-only, -c Don't print the [global] or [general] sections. This
+ is useful for including the generated file into an
+ existing extensions.conf via #include or #exec.
+
+ --help, -h Print this message.
+
+]]
+
+extensions_file = "/etc/asterisk/extensions.lua"
+
+options = {}
+
+for k, v in ipairs(arg) do
+ if v:sub(1, 1) == "-" then
+ if v == "-h" or v == "--help" then
+ print("match")
+ options["help"] = true
+ elseif v == "-c" or v == "--contexts-only" then
+ options["contexts-only"] = true
+ end
+ else
+ options["extensions-file"] = v
+ end
+end
+
+if options["help"] then
+ io.stderr:write(usage)
+ os.exit(0)
+end
+
+if options["extensions-file"] then
+ extensions_file = options["extensions-file"]
+end
+
+result, error_message = pcall(dofile, extensions_file)
+
+if not result then
+ io.stderr:write(error_message .. "\n")
+ os.exit(1)
+end
+
+if not extensions then
+ io.stderr:write("Error: extensions table not found in '" .. extensions_file .. "'\n")
+ os.exit(1)
+end
+
+if not options["contexts-only"] then
+ io.stdout:write("[general]\n\n[globals]\n\n")
+end
+
+for context, extens in pairs(extensions) do
+ io.stdout:write("[" .. tostring(context) .. "]\nswitch => Lua\n\n")
+end
+