123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- const dnsPlugins = require('../global/certbot-dns-plugins.json');
- const utils = require('./utils');
- const error = require('./error');
- const logger = require('../logger').certbot;
- const batchflow = require('batchflow');
- const CERTBOT_VERSION_REPLACEMENT = '$(certbot --version | grep -Eo \'[0-9](\\.[0-9]+)+\')';
- const certbot = {
- /**
- * @param {array} pluginKeys
- */
- installPlugins: async function (pluginKeys) {
- let hasErrors = false;
- return new Promise((resolve, reject) => {
- if (pluginKeys.length === 0) {
- resolve();
- return;
- }
- batchflow(pluginKeys).sequential()
- .each((i, pluginKey, next) => {
- certbot.installPlugin(pluginKey)
- .then(() => {
- next();
- })
- .catch((err) => {
- hasErrors = true;
- next(err);
- });
- })
- .error((err) => {
- logger.error(err.message);
- })
- .end(() => {
- if (hasErrors) {
- reject(new error.CommandError('Some plugins failed to install. Please check the logs above', 1));
- } else {
- resolve();
- }
- });
- });
- },
- /**
- * Installs a cerbot plugin given the key for the object from
- * ../global/certbot-dns-plugins.json
- *
- * @param {string} pluginKey
- * @returns {Object}
- */
- installPlugin: async function (pluginKey) {
- if (typeof dnsPlugins[pluginKey] === 'undefined') {
- // throw Error(`Certbot plugin ${pluginKey} not found`);
- throw new error.ItemNotFoundError(pluginKey);
- }
- const plugin = dnsPlugins[pluginKey];
- logger.start(`Installing ${pluginKey}...`);
- plugin.version = plugin.version.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
- plugin.dependencies = plugin.dependencies.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
- const cmd = '. /opt/certbot/bin/activate && pip install --no-cache-dir ' + plugin.dependencies + ' ' + plugin.package_name + plugin.version + ' ' + ' && deactivate';
- return utils.exec(cmd)
- .then((result) => {
- logger.complete(`Installed ${pluginKey}`);
- return result;
- })
- .catch((err) => {
- throw err;
- });
- },
- };
- module.exports = certbot;
|