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()