Local add-on content management interface. More...
#include "addon/validation.hpp"
#include <functional>
#include <string>
#include <vector>
#include <map>
Go to the source code of this file.
Classes | |
struct | invalid_pbl_exception |
Exception thrown when the WML parser fails to read a .pbl file. More... | |
Functions | |
bool | remove_local_addon (const std::string &addon) |
Removes the specified add-on, deleting its full directory structure. More... | |
bool | have_addon_pbl_info (const std::string &addon_name) |
Returns whether a .pbl file is present for the specified add-on or not. More... | |
bool | have_addon_in_vcs_tree (const std::string &addon_name) |
Returns whether the specified add-on appears to be managed by a VCS or not. More... | |
config | get_addon_pbl_info (const std::string &addon_name, bool do_validate) |
Gets the publish information for an add-on. More... | |
void | set_addon_pbl_info (const std::string &addon_name, const class config &cfg) |
Sets the publish information for an add-on. More... | |
bool | have_addon_install_info (const std::string &addon_name) |
Returns true if there is a local installation info (_info.cfg) file for the add-on. More... | |
void | get_addon_install_info (const std::string &addon_name, class config &cfg) |
Gets the installation info (_info.cfg) for an add-on. More... | |
void | write_addon_install_info (const std::string &addon_name, const class config &cfg) |
Writes the installation info (_info.cfg) for an add-on to disk. More... | |
std::vector< std::string > | available_addons () |
Returns a list of local add-ons that can be published. More... | |
std::vector< std::string > | installed_addons () |
Retrieves the names of all installed add-ons. More... | |
std::map< std::string, std::string > | installed_addons_and_versions () |
Retrieves the ids and versions of all installed add-ons. More... | |
bool | is_addon_installed (const std::string &addon_name) |
Check whether the specified add-on is currently installed. More... | |
void | archive_addon (const std::string &addon_name, class config &cfg) |
Archives an add-on into a config object for campaignd transactions. More... | |
void | unarchive_addon (const class config &cfg, std::function< void(unsigned)> progress_callback={}) |
Unarchives an add-on from campaignd's retrieved config object. More... | |
void | purge_addon (const config &removelist) |
Removes the listed files from the addon. More... | |
void | refresh_addon_version_info_cache () |
Refreshes the per-session cache of add-on's version information structs. More... | |
version_info | get_addon_version_info (const std::string &addon) |
Returns a particular installed add-on's version information. More... | |
Local add-on content management interface.
This API only concerns local functionality dealing with enumerating and manipulating installed add-ons, as well as extracting add-ons in WML pack form, usually but not necessarily obtained through the networked client.
It also includes functions for the handling of add-on versioning information (_info.cfg) and publishing information (_server.pbl).
Definition in file manager.hpp.
void archive_addon | ( | const std::string & | addon_name, |
class config & | cfg | ||
) |
Archives an add-on into a config object for campaignd transactions.
Definition at line 296 of file manager.cpp.
References config::add_child(), archive_dir(), filesystem::get_addons_dir(), and read_ignore_patterns().
Referenced by addons_client::upload_addon().
std::vector<std::string> available_addons | ( | ) |
Returns a list of local add-ons that can be published.
Definition at line 187 of file manager.cpp.
Referenced by gui2::dialogs::addon_manager::load_addon_list().
void get_addon_install_info | ( | const std::string & | addon_name, |
class config & | cfg | ||
) |
Gets the installation info (_info.cfg) for an add-on.
addon_name | The add-on's main directory/file name. |
cfg | A config object to store the add-on's properties. |
Definition at line 107 of file manager.cpp.
References config::clear(), e, ERR_CFG, lg::info(), filesystem::istream_file(), config::optional_child(), and read().
Referenced by installed_addons_and_versions(), and refresh_addon_version_info_cache().
config get_addon_pbl_info | ( | const std::string & | addon_name, |
bool | do_validate | ||
) |
Gets the publish information for an add-on.
addon_name | The add-on's main directory/file name. |
do_validate | Whether we want to run validation on the .pbl file. |
invalid_pbl_exception | If it is not possible to read the .pbl file (often due to invalid WML). |
Definition at line 71 of file manager.cpp.
References e, filesystem::get_wml_location(), filesystem::istream_file(), wfl::msg(), read(), filesystem::sanitize_path(), and validator.
Referenced by addons_client::delete_remote_addon(), get_addon_tracking_info(), installed_addons_and_versions(), gui2::dialogs::addon_manager::load_addon_list(), game_config_manager::load_addons_cfg(), and gui2::dialogs::addon_manager::publish_addon().
version_info get_addon_version_info | ( | const std::string & | addon | ) |
Returns a particular installed add-on's version information.
Definition at line 428 of file manager.cpp.
Referenced by addons_client::download_addon(), and get_addon_tracking_info().
bool have_addon_in_vcs_tree | ( | const std::string & | addon_name | ) |
Returns whether the specified add-on appears to be managed by a VCS or not.
This is used by the add-ons client to prompt the user before overwriting add-ons that may currently be managed externally instead of through the built-in campaignd client.
Currently supported VCSes are: Subversion, Git, Mercurial.
Definition at line 57 of file manager.cpp.
References filesystem::file_exists(), and filesystem::get_addons_dir().
Referenced by addons_client::do_check_before_overwriting_addon(), get_addon_tracking_info(), refresh_addon_version_info_cache(), and gui2::dialogs::addon_manager::uninstall_addon().
bool have_addon_install_info | ( | const std::string & | addon_name | ) |
Returns true if there is a local installation info (_info.cfg) file for the add-on.
Definition at line 102 of file manager.cpp.
References filesystem::file_exists().
bool have_addon_pbl_info | ( | const std::string & | addon_name | ) |
Returns whether a .pbl file is present for the specified add-on or not.
Definition at line 66 of file manager.cpp.
References filesystem::file_exists().
Referenced by addons_client::do_check_before_overwriting_addon(), get_addon_tracking_info(), installed_addons_and_versions(), game_config_manager::load_addons_cfg(), refresh_addon_version_info_cache(), and gui2::dialogs::addon_manager::uninstall_addon().
std::vector<std::string> installed_addons | ( | ) |
Retrieves the names of all installed add-ons.
Definition at line 192 of file manager.cpp.
Referenced by mp::game_info::game_info(), installed_addons_and_versions(), manage_addons(), refresh_addon_version_info_cache(), and mp::lobby_info::refresh_installed_addons_cache().
std::map<std::string, std::string> installed_addons_and_versions | ( | ) |
Retrieves the ids and versions of all installed add-ons.
Definition at line 197 of file manager.cpp.
References config::empty(), filesystem::file_exists(), get_addon_install_info(), get_addon_pbl_info(), have_addon_pbl_info(), and installed_addons().
Referenced by game_config::full_build_report().
bool is_addon_installed | ( | const std::string & | addon_name | ) |
Check whether the specified add-on is currently installed.
Definition at line 220 of file manager.cpp.
References filesystem::file_exists(), and filesystem::get_addons_dir().
Referenced by addons_client::do_resolve_addon_dependencies(), get_addon_tracking_info(), and addons_client::try_fetch_addon().
void purge_addon | ( | const config & | removelist | ) |
Removes the listed files from the addon.
Definition at line 377 of file manager.cpp.
References filesystem::get_addons_dir(), and purge_dir().
Referenced by addons_client::install_addon().
void refresh_addon_version_info_cache | ( | ) |
Refreshes the per-session cache of add-on's version information structs.
Definition at line 387 of file manager.cpp.
References config::empty(), filesystem::file_exists(), get_addon_install_info(), have_addon_in_vcs_tree(), have_addon_pbl_info(), i, installed_addons(), LOG_CFG, and WRN_CFG.
Referenced by do_gameloop(), gui2::dialogs::addon_manager::load_addon_list(), game_config_manager::reload_changed_game_config(), and gui2::dialogs::addon_manager::update_all_addons().
bool remove_local_addon | ( | const std::string & | addon | ) |
Removes the specified add-on, deleting its full directory structure.
Definition at line 144 of file manager.cpp.
References filesystem::delete_directory(), ERR_CFG, filesystem::file_exists(), filesystem::get_addons_dir(), and LOG_CFG.
Referenced by addons_client::install_addon(), and gui2::dialogs::addon_manager::uninstall_addon().
void set_addon_pbl_info | ( | const std::string & | addon_name, |
const class config & | cfg | ||
) |
Sets the publish information for an add-on.
addon_name | The add-on's main directory/file name. |
cfg | A config object from which the add-on's properties are copied. |
void unarchive_addon | ( | const class config & | cfg, |
std::function< void(unsigned)> | progress_callback = {} |
||
) |
Unarchives an add-on from campaignd's retrieved config object.
void write_addon_install_info | ( | const std::string & | addon_name, |
const class config & | cfg | ||
) |
Writes the installation info (_info.cfg) for an add-on to disk.
addon_name | The add-on's main directory/file name. |
cfg | A config object containing the add-on's properties. |