Deprecate modpack.txt and use modpack.conf instead (#7892)
* Deprecate modpack.txt and use modpack.conf insteadmaster
parent
3a9fe2bd5b
commit
70bf3439ab
|
@ -76,10 +76,17 @@ local function start_install(calling_dialog, package)
|
|||
if not path then
|
||||
gamedata.errormessage = msg
|
||||
else
|
||||
core.log("action", "Installed package to " .. path)
|
||||
|
||||
local conf_path
|
||||
local name_is_title = false
|
||||
if result.package.type == "mod" then
|
||||
conf_path = path .. DIR_DELIM .. "mod.conf"
|
||||
local actual_type = pkgmgr.get_folder_type(path)
|
||||
if actual_type.type == "modpack" then
|
||||
conf_path = path .. DIR_DELIM .. "modpack.conf"
|
||||
else
|
||||
conf_path = path .. DIR_DELIM .. "mod.conf"
|
||||
end
|
||||
elseif result.package.type == "game" then
|
||||
conf_path = path .. DIR_DELIM .. "game.conf"
|
||||
name_is_title = true
|
||||
|
|
|
@ -25,27 +25,46 @@ function get_mods(path,retval,modpack)
|
|||
local toadd = {}
|
||||
retval[#retval + 1] = toadd
|
||||
|
||||
local mod_conf = Settings(prefix .. DIR_DELIM .. "mod.conf"):to_table()
|
||||
if mod_conf.name then
|
||||
name = mod_conf.name
|
||||
-- Get config file
|
||||
local mod_conf
|
||||
local modpack_conf = io.open(prefix .. DIR_DELIM .. "modpack.conf")
|
||||
if modpack_conf then
|
||||
toadd.is_modpack = true
|
||||
modpack_conf:close()
|
||||
|
||||
mod_conf = Settings(prefix .. DIR_DELIM .. "modpack.conf"):to_table()
|
||||
if mod_conf.name then
|
||||
name = mod_conf.name
|
||||
end
|
||||
else
|
||||
mod_conf = Settings(prefix .. DIR_DELIM .. "mod.conf"):to_table()
|
||||
if mod_conf.name then
|
||||
name = mod_conf.name
|
||||
end
|
||||
end
|
||||
|
||||
-- Read from config
|
||||
toadd.name = name
|
||||
toadd.author = mod_conf.author
|
||||
toadd.release = tonumber(mod_conf.release or "0")
|
||||
toadd.path = prefix
|
||||
toadd.type = "mod"
|
||||
|
||||
if modpack ~= nil and modpack ~= "" then
|
||||
-- Check modpack.txt
|
||||
-- Note: modpack.conf is already checked above
|
||||
local modpackfile = io.open(prefix .. DIR_DELIM .. "modpack.txt")
|
||||
if modpackfile then
|
||||
modpackfile:close()
|
||||
toadd.is_modpack = true
|
||||
end
|
||||
|
||||
-- Deal with modpack contents
|
||||
if modpack and modpack ~= "" then
|
||||
toadd.modpack = modpack
|
||||
else
|
||||
local modpackfile = io.open(prefix .. DIR_DELIM .. "modpack.txt")
|
||||
if modpackfile then
|
||||
modpackfile:close()
|
||||
toadd.type = "modpack"
|
||||
toadd.is_modpack = true
|
||||
get_mods(prefix, retval, name)
|
||||
end
|
||||
elseif toadd.is_modpack then
|
||||
toadd.type = "modpack"
|
||||
toadd.is_modpack = true
|
||||
get_mods(prefix, retval, name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -114,6 +133,12 @@ function pkgmgr.get_folder_type(path)
|
|||
return { type = "mod", path = path }
|
||||
end
|
||||
|
||||
testfile = io.open(path .. DIR_DELIM .. "modpack.conf","r")
|
||||
if testfile ~= nil then
|
||||
testfile:close()
|
||||
return { type = "modpack", path = path }
|
||||
end
|
||||
|
||||
testfile = io.open(path .. DIR_DELIM .. "modpack.txt","r")
|
||||
if testfile ~= nil then
|
||||
testfile:close()
|
||||
|
@ -422,7 +447,7 @@ function pkgmgr.install_dir(type, path, basename, targetpath)
|
|||
else
|
||||
local clean_path = nil
|
||||
if basename ~= nil then
|
||||
clean_path = "mp_" .. basename
|
||||
clean_path = basename
|
||||
end
|
||||
if not clean_path then
|
||||
clean_path = get_last_folder(cleanup_path(basefolder.path))
|
||||
|
|
|
@ -68,8 +68,12 @@ Modpack support
|
|||
**NOTE: Not implemented yet.**
|
||||
|
||||
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
||||
should be a mod, contains a file named `modpack.txt`. This file shall be
|
||||
empty, except for lines starting with `#`, which are comments.
|
||||
should be a mod, contains a file named `modpack.conf`.
|
||||
The file is a key-value store of modpack details.
|
||||
|
||||
* `name`: The modpack name.
|
||||
* `description`: Description of mod to be shown in the Mods tab of the main
|
||||
menu.
|
||||
|
||||
Mod directory structure
|
||||
------------------------
|
||||
|
|
|
@ -119,8 +119,14 @@ Modpacks
|
|||
--------
|
||||
|
||||
Mods can be put in a subdirectory, if the parent directory, which otherwise
|
||||
should be a mod, contains a file named `modpack.txt`. This file shall be
|
||||
empty, except for lines starting with `#`, which are comments.
|
||||
should be a mod, contains a file named `modpack.conf`.
|
||||
The file is a key-value store of modpack details.
|
||||
|
||||
* `name`: The modpack name.
|
||||
* `description`: Description of mod to be shown in the Mods tab of the main
|
||||
menu.
|
||||
|
||||
Note: to support 0.4.x, please also create an empty modpack.txt file.
|
||||
|
||||
Mod directory structure
|
||||
-----------------------
|
||||
|
|
|
@ -41,6 +41,12 @@ ContentType getContentType(const ContentSpec &spec)
|
|||
return ECT_MODPACK;
|
||||
}
|
||||
|
||||
std::ifstream modpack2_is((spec.path + DIR_DELIM + "modpack.conf").c_str());
|
||||
if (modpack2_is.good()) {
|
||||
modpack2_is.close();
|
||||
return ECT_MODPACK;
|
||||
}
|
||||
|
||||
std::ifstream init_is((spec.path + DIR_DELIM + "init.lua").c_str());
|
||||
if (init_is.good()) {
|
||||
init_is.close();
|
||||
|
@ -73,7 +79,7 @@ void parseContentInfo(ContentSpec &spec)
|
|||
break;
|
||||
case ECT_MODPACK:
|
||||
spec.type = "modpack";
|
||||
conf_path = spec.path + DIR_DELIM + "mod.conf";
|
||||
conf_path = spec.path + DIR_DELIM + "modpack.conf";
|
||||
break;
|
||||
case ECT_GAME:
|
||||
spec.type = "game";
|
||||
|
|
|
@ -66,12 +66,16 @@ void parseModContents(ModSpec &spec)
|
|||
|
||||
// Handle modpacks (defined by containing modpack.txt)
|
||||
std::ifstream modpack_is((spec.path + DIR_DELIM + "modpack.txt").c_str());
|
||||
if (modpack_is.good()) { // a modpack, recursively get the mods in it
|
||||
modpack_is.close(); // We don't actually need the file
|
||||
std::ifstream modpack2_is((spec.path + DIR_DELIM + "modpack.conf").c_str());
|
||||
if (modpack_is.good() || modpack2_is.good()) {
|
||||
if (modpack_is.good())
|
||||
modpack_is.close();
|
||||
|
||||
if (modpack2_is.good())
|
||||
modpack2_is.close();
|
||||
|
||||
spec.is_modpack = true;
|
||||
spec.modpack_content = getModsInPath(spec.path, true);
|
||||
// modpacks have no dependencies; they are defined and
|
||||
// tracked separately for each mod in the modpack
|
||||
|
||||
} else {
|
||||
// Attempt to load dependencies from mod.conf
|
||||
|
|
Loading…
Reference in New Issue