install-certbot-plugins 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/node
  2. // Usage:
  3. // Install all plugins defined in `certbot-dns-plugins.json`:
  4. // ./install-certbot-plugins
  5. // Install one or more specific plugins:
  6. // ./install-certbot-plugins route53 cloudflare
  7. //
  8. // Usage with a running docker container:
  9. // docker exec npm_core /command/s6-setuidgid 1000:1000 bash -c "/app/scripts/install-certbot-plugins"
  10. //
  11. const dnsPlugins = require('../global/certbot-dns-plugins.json');
  12. const certbot = require('../lib/certbot');
  13. const logger = require('../logger').certbot;
  14. const batchflow = require('batchflow');
  15. let hasErrors = false;
  16. let failingPlugins = [];
  17. let pluginKeys = Object.keys(dnsPlugins);
  18. if (process.argv.length > 2) {
  19. pluginKeys = process.argv.slice(2);
  20. }
  21. batchflow(pluginKeys).sequential()
  22. .each((i, pluginKey, next) => {
  23. certbot.installPlugin(pluginKey)
  24. .then(() => {
  25. next();
  26. })
  27. .catch((err) => {
  28. hasErrors = true;
  29. failingPlugins.push(pluginKey);
  30. next(err);
  31. });
  32. })
  33. .error((err) => {
  34. logger.error(err.message);
  35. })
  36. .end(() => {
  37. if (hasErrors) {
  38. logger.error('Some plugins failed to install. Please check the logs above. Failing plugins: ' + '\n - ' + failingPlugins.join('\n - '));
  39. process.exit(1);
  40. } else {
  41. logger.complete('Plugins installed successfully');
  42. process.exit(0);
  43. }
  44. });