summaryrefslogtreecommitdiff
path: root/builtin/mainmenu/generate_from_settingtypes.lua
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/mainmenu/generate_from_settingtypes.lua')
-rw-r--r--builtin/mainmenu/generate_from_settingtypes.lua99
1 files changed, 99 insertions, 0 deletions
diff --git a/builtin/mainmenu/generate_from_settingtypes.lua b/builtin/mainmenu/generate_from_settingtypes.lua
new file mode 100644
index 000000000..6c9ba27fb
--- /dev/null
+++ b/builtin/mainmenu/generate_from_settingtypes.lua
@@ -0,0 +1,99 @@
+local settings = ...
+
+local concat = table.concat
+local insert = table.insert
+local sprintf = string.format
+local rep = string.rep
+
+local minetest_example_header = [[
+# This file contains a list of all available settings and their default value for minetest.conf
+
+# By default, all the settings are commented and not functional.
+# Uncomment settings by removing the preceding #.
+
+# minetest.conf is read by default from:
+# ../minetest.conf
+# ../../minetest.conf
+# Any other path can be chosen by passing the path as a parameter
+# to the program, eg. "minetest.exe --config ../minetest.conf.example".
+
+# Further documentation:
+# http://wiki.minetest.net/
+
+]]
+
+local function create_minetest_conf_example()
+ local result = { minetest_example_header }
+ for _, entry in ipairs(settings) do
+ if entry.type == "category" then
+ if entry.level == 0 then
+ insert(result, "#\n# " .. entry.name .. "\n#\n\n")
+ else
+ insert(result, rep("#", entry.level))
+ insert(result, "# " .. entry.name .. "\n\n")
+ end
+ else
+ if entry.comment ~= "" then
+ for _, comment_line in ipairs(entry.comment:split("\n", true)) do
+ insert(result, "# " .. comment_line .. "\n")
+ end
+ end
+ insert(result, "# type: " .. entry.type)
+ if entry.min then
+ insert(result, " min: " .. entry.min)
+ end
+ if entry.max then
+ insert(result, " max: " .. entry.max)
+ end
+ if entry.values then
+ insert(result, " values: " .. concat(entry.values, ", "))
+ end
+ if entry.possible then
+ insert(result, " possible values: " .. entry.possible:gsub(",", ", "))
+ end
+ insert(result, "\n")
+ local append
+ if entry.default ~= "" then
+ append = " " .. entry.default
+ end
+ insert(result, sprintf("# %s =%s\n\n", entry.name, append or ""))
+ end
+ end
+ return concat(result)
+end
+
+local translation_file_header = [[
+// This file is automatically generated
+// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files
+// To update it, refer to the bottom of builtin/mainmenu/dlg_settings_advanced.lua
+
+fake_function() {]]
+
+local function create_translation_file()
+ local result = { translation_file_header }
+ for _, entry in ipairs(settings) do
+ if entry.type == "category" then
+ insert(result, sprintf("\tgettext(%q);", entry.name))
+ else
+ if entry.readable_name then
+ insert(result, sprintf("\tgettext(%q);", entry.readable_name))
+ end
+ if entry.comment ~= "" then
+ local comment_escaped = entry.comment:gsub("\n", "\\n")
+ comment_escaped = comment_escaped:gsub("\"", "\\\"")
+ insert(result, "\tgettext(\"" .. comment_escaped .. "\");")
+ end
+ end
+ end
+ insert(result, "}\n")
+ return concat(result, "\n")
+end
+
+local file = assert(io.open("minetest.conf.example", "w"))
+file:write(create_minetest_conf_example())
+file:close()
+
+file = assert(io.open("src/settings_translation_file.cpp", "w"))
+file:write(create_translation_file())
+file:close()
+