Source code for errbot.core_plugins.backup

import os

from errbot import BotPlugin, botcmd


[docs]class Backup(BotPlugin): """ Backup related commands. """
[docs] @botcmd(admin_only=True) def backup(self, msg, args): """Backup everything. Makes a backup script called backup.py in the data bot directory. You can restore the backup from the command line with errbot --restore """ filename = os.path.join(self.bot_config.BOT_DATA_DIR, 'backup.py') with open(filename, 'w') as f: f.write('## This file is not executable on its own. use errbot -r FILE to restore your bot.\n\n') f.write('log.info("Restoring repo_manager.")\n') for key, value in self._bot.repo_manager.items(): f.write('bot.repo_manager["' + key + '"] = ' + repr(value) + '\n') f.write('log.info("Restoring plugin_manager.")\n') for key, value in self._bot.plugin_manager.items(): # don't mimic that in real plugins, this is core only. f.write('bot.plugin_manager["' + key + '"] = ' + repr(value) + '\n') f.write('log.info("Installing plugins.")\n') f.write('if "installed_repos" in bot.repo_manager:\n') f.write(' for repo in bot.repo_manager["installed_repos"]:\n') f.write(' log.error(bot.repo_manager.install_repo(repo))\n') f.write('log.info("Restoring plugins data.")\n') f.write('bot.plugin_manager.update_plugin_places(bot.repo_manager.get_all_repos_paths())\n') for plugin in self._bot.plugin_manager.plugins.values(): if plugin._store: f.write('pobj = bot.plugin_manager.plugins["' + plugin.name + '"]\n') f.write('pobj.init_storage()\n') for key, value in plugin.items(): f.write('pobj["' + key + '"] = ' + repr(value) + '\n') f.write('pobj.close_storage()\n') return f'The backup file has been written in "{filename}".'