radify/radiian

View on GitHub
lib/radiian-init.js

Summary

Maintainability
A
0 mins
Test Coverage
(function() {
  'use strict';

  var inquirer = require('inquirer');
  var generator = require('./Generator');
  var questions = require('./questions');

  function clear() {
    process.stdout.write('\u001b[2J\u001b[0;0H');
  }

  function go(questions, success) {
    clear();
    inquirer.prompt(questions, function(answers) {
      inquirer.prompt([{
        type: 'confirm',
        name: 'confirm',
        message: function() {
          clear();
          return 'Please confirm that your answers are correct.\n' +
            JSON.stringify(answers, null, '  ') +
            '\nAre these answers correct?';
        },
        default: true
      }], function(confirmation) {
        if (!confirmation.confirm) {
          // load existing answers as defaults into questions so user is modifying,
          // not starting from scratch
          questions.map(function(question) {
            question.default = answers[question.name];
          });
          go(questions, success);
        } else {
          success(answers);
        }
      });
    });
  }

  go(questions, function(answers) {
    console.log('Generating playbook for an app named ' + answers.appName + ' in ./ansible...');
    generator.generate(answers);

    console.log('... done! Check out ./ansible for your playbook.');
    console.log('Please make sure that you update ansible/' + answers.appPem);
    isAnsibleInstalled();
  });

  function isAnsibleInstalled(){
    var exec = require('child_process').exec;
    var cmd = "ansible --version";

    exec(cmd, function(err, stdout, stderr){
      if(err) console.log("Ansible does not appear to be installed correctly. Please install ansible.");
    });
  }

}());