The Battle for Wesnoth  1.19.0-dev
Macros | Functions | Variables
manager.cpp File Reference
#include "addon/manager.hpp"
#include "filesystem.hpp"
#include "log.hpp"
#include "serialization/parser.hpp"
#include "serialization/schema_validator.hpp"
#include "game_version.hpp"
#include "wml_exception.hpp"
#include <boost/algorithm/string.hpp>
Include dependency graph for manager.cpp:

Go to the source code of this file.

Macros

#define ERR_CFG   LOG_STREAM(err , log_config)
 
#define LOG_CFG   LOG_STREAM(info, log_config)
 
#define WRN_CFG   LOG_STREAM(warn, log_config)
 
#define ERR_FS   LOG_STREAM(err , log_filesystem)
 
#define ERR_NET   LOG_STREAM(err , log_network)
 
#define LOG_NET   LOG_STREAM(info, log_network)
 

Functions

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...
 
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...
 
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 config &cfg)
 
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, config &cfg)
 Gets the installation info (_info.cfg) for an add-on. More...
 
void write_addon_install_info (const std::string &addon_name, const config &cfg)
 
bool remove_local_addon (const std::string &addon)
 Removes the specified add-on, deleting its full directory structure. 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...
 
static bool IsCR (const char &c)
 
static std::string strip_cr (std::string str, bool strip)
 
static filesystem::blacklist_pattern_list read_ignore_patterns (const std::string &addon_name)
 
static void archive_file (const std::string &path, const std::string &fname, config &cfg)
 
static void archive_dir (const std::string &path, const std::string &dirname, config &cfg, const filesystem::blacklist_pattern_list &ignore_patterns)
 
void archive_addon (const std::string &addon_name, config &cfg)
 Archives an add-on into a config object for campaignd transactions. More...
 
static void unarchive_file (const std::string &path, const config &cfg)
 
static void unarchive_dir (const std::string &path, const config &cfg, std::function< void()> file_callback={})
 
static unsigned count_pack_files (const config &cfg)
 
void unarchive_addon (const config &cfg, std::function< void(unsigned)> progress_callback)
 
static void purge_dir (const std::string &path, const config &removelist)
 
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...
 

Variables

static lg::log_domain log_config ("config")
 
static lg::log_domain log_filesystem ("filesystem")
 
static lg::log_domain log_network ("network")
 

Macro Definition Documentation

◆ ERR_CFG

#define ERR_CFG   LOG_STREAM(err , log_config)

Definition at line 29 of file manager.cpp.

◆ ERR_FS

#define ERR_FS   LOG_STREAM(err , log_filesystem)

Definition at line 34 of file manager.cpp.

◆ ERR_NET

#define ERR_NET   LOG_STREAM(err , log_network)

Definition at line 37 of file manager.cpp.

◆ LOG_CFG

#define LOG_CFG   LOG_STREAM(info, log_config)

Definition at line 30 of file manager.cpp.

◆ LOG_NET

#define LOG_NET   LOG_STREAM(info, log_network)

Definition at line 38 of file manager.cpp.

◆ WRN_CFG

#define WRN_CFG   LOG_STREAM(warn, log_config)

Definition at line 31 of file manager.cpp.

Function Documentation

◆ archive_addon()

void archive_addon ( const std::string &  addon_name,
config cfg 
)

Archives an add-on into a config object for campaignd transactions.

Definition at line 297 of file manager.cpp.

References config::add_child(), archive_dir(), filesystem::get_addons_dir(), and read_ignore_patterns().

Referenced by addons_client::upload_addon().

◆ archive_dir()

static void archive_dir ( const std::string &  path,
const std::string &  dirname,
config cfg,
const filesystem::blacklist_pattern_list ignore_patterns 
)
static

◆ archive_file()

static void archive_file ( const std::string &  path,
const std::string &  fname,
config cfg 
)
static

Definition at line 268 of file manager.cpp.

References encode_binary(), game_config::path, filesystem::read_file(), and strip_cr().

Referenced by archive_dir().

◆ available_addons()

std::vector<std::string> available_addons ( )

Returns a list of local add-ons that can be published.

Definition at line 186 of file manager.cpp.

Referenced by gui2::dialogs::addon_manager::load_addon_list().

◆ count_pack_files()

static unsigned count_pack_files ( const config cfg)
static

Definition at line 332 of file manager.cpp.

References config::child_count(), config::child_range(), and d.

Referenced by unarchive_addon().

◆ get_addon_install_info()

void get_addon_install_info ( const std::string &  addon_name,
class config cfg 
)

Gets the installation info (_info.cfg) for an add-on.

Parameters
addon_nameThe add-on's main directory/file name.
cfgA config object to store the add-on's properties.

Definition at line 106 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().

◆ get_addon_pbl_info()

config get_addon_pbl_info ( const std::string &  addon_name,
bool  do_validate 
)

Gets the publish information for an add-on.

Parameters
addon_nameThe add-on's main directory/file name.
do_validateWhether we want to run validation on the .pbl file.
Exceptions
invalid_pbl_exceptionIf it is not possible to read the .pbl file (often due to invalid WML).

Definition at line 70 of file manager.cpp.

References e, config::get(), filesystem::get_wml_location(), filesystem::istream_file(), wfl::msg(), read(), and filesystem::sanitize_path().

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

◆ get_addon_version_info()

version_info get_addon_version_info ( const std::string &  addon)

Returns a particular installed add-on's version information.

Definition at line 429 of file manager.cpp.

Referenced by addons_client::download_addon(), and get_addon_tracking_info().

◆ have_addon_in_vcs_tree()

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

◆ have_addon_install_info()

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 101 of file manager.cpp.

References filesystem::file_exists().

◆ have_addon_pbl_info()

bool have_addon_pbl_info ( const std::string &  addon_name)

◆ installed_addons()

std::vector<std::string> installed_addons ( )

◆ installed_addons_and_versions()

std::map<std::string, std::string> installed_addons_and_versions ( )

Retrieves the ids and versions of all installed add-ons.

Definition at line 196 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().

◆ is_addon_installed()

bool is_addon_installed ( const std::string &  addon_name)

Check whether the specified add-on is currently installed.

Definition at line 219 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().

◆ IsCR()

static bool IsCR ( const char &  c)
inlinestatic

Definition at line 225 of file manager.cpp.

References c.

Referenced by strip_cr().

◆ purge_addon()

void purge_addon ( const config removelist)

Removes the listed files from the addon.

Definition at line 378 of file manager.cpp.

References filesystem::get_addons_dir(), and purge_dir().

Referenced by addons_client::install_addon().

◆ purge_dir()

static void purge_dir ( const std::string &  path,
const config removelist 
)
static

◆ read_ignore_patterns()

static filesystem::blacklist_pattern_list read_ignore_patterns ( const std::string &  addon_name)
static

◆ refresh_addon_version_info_cache()

void refresh_addon_version_info_cache ( )

◆ remove_local_addon()

bool remove_local_addon ( const std::string &  addon)

Removes the specified add-on, deleting its full directory structure.

Definition at line 143 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().

◆ set_addon_pbl_info()

void set_addon_pbl_info ( const std::string &  addon_name,
const config cfg 
)

Definition at line 95 of file manager.cpp.

References filesystem::ostream_file(), and write().

◆ strip_cr()

static std::string strip_cr ( std::string  str,
bool  strip 
)
static

Definition at line 230 of file manager.cpp.

References IsCR().

Referenced by archive_file().

◆ unarchive_addon()

void unarchive_addon ( const config cfg,
std::function< void(unsigned)>  progress_callback 
)

◆ unarchive_dir()

static void unarchive_dir ( const std::string &  path,
const config cfg,
std::function< void()>  file_callback = {} 
)
static

Definition at line 310 of file manager.cpp.

Referenced by unarchive_addon().

◆ unarchive_file()

static void unarchive_file ( const std::string &  path,
const config cfg 
)
static

Definition at line 305 of file manager.cpp.

References game_config::path, unencode_binary(), and filesystem::write_file().

◆ write_addon_install_info()

void write_addon_install_info ( const std::string &  addon_name,
const config cfg 
)

Definition at line 126 of file manager.cpp.

References config::add_child(), LOG_CFG, filesystem::ostream_file(), and write().

Referenced by addons_client::install_addon().

Variable Documentation

◆ log_config

lg::log_domain log_config("config") ( "config"  )
static

◆ log_filesystem

lg::log_domain log_filesystem("filesystem") ( "filesystem"  )
static

◆ log_network

lg::log_domain log_network("network") ( "network"  )
static