#!/usr/bin/node // Usage: // Install all plugins defined in `certbot-dns-plugins.json`: // ./install-certbot-plugins // Install one or more specific plugins: // ./install-certbot-plugins route53 cloudflare // // Usage with a running docker container: // docker exec npm_core /command/s6-setuidgid 1000:1000 bash -c "/app/scripts/install-certbot-plugins" // import dnsPlugins from "../global/certbot-dns-plugins.json" with { type: "json" }; import { installPlugin } from "../lib/certbot.js"; import { certbot as logger } from "../logger.js"; import batchflow from "batchflow"; let hasErrors = false; let failingPlugins = []; let pluginKeys = Object.keys(dnsPlugins); if (process.argv.length > 2) { pluginKeys = process.argv.slice(2); } batchflow(pluginKeys).sequential() .each((i, pluginKey, next) => { installPlugin(pluginKey) .then(() => { next(); }) .catch((err) => { hasErrors = true; failingPlugins.push(pluginKey); next(err); }); }) .error((err) => { logger.error(err.message); }) .end(() => { if (hasErrors) { logger.error('Some plugins failed to install. Please check the logs above. Failing plugins: ' + '\n - ' + failingPlugins.join('\n - ')); process.exit(1); } else { logger.complete('Plugins installed successfully'); process.exit(0); } });