all files / mlpm/lib/commands/ init.js

100% Statements 38/38
100% Branches 17/17
100% Functions 10/10
100% Lines 32/32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                                                                               
'use strict'
 
var log = require('winston')
var prompt = require('prompt')
var pj = require('prettyjson')
var _ = require('lodash')
var project = require('../project.js')
 
function getSchema(mlpm, cb) {
  var schema = {
    properties: {
      name: {
        description: 'name',
        message: 'name is required',
        required: true
      },
      version: {
        pattern: /\d(\.\d){2}/,
        description: 'version',
        message: 'version is required',
        required: true
      },
      description: {
        description: 'description',
        message: 'description is required',
        required: true
      },
      repository: {
        description: 'git repository'
      }
    }
  }
 
  project.getDefaultConfig(mlpm, function(err, defaults) {
    if (err) return cb(err)
 
    _.forIn(defaults, function(value, name) {
      schema.properties[name].default = value
    })
    cb(null, schema)
  })
}
 
function save(mlpm) {
  var conf = [{ name: 'save', description: 'Is this ok?', default: 'yes' }]
  log.info( pj.render(mlpm) )
 
  prompt.start()
  prompt.get(conf, function(err, result) {
    if (err) return log.error(err)
 
    if (result && (result.save === 'y' || result.save === 'yes')) {
      project.saveConfig(mlpm, function(err) {
        if (err) return log.error(err)
      })
    }
  })
}
 
function init() {
  project.getConfig(function(err, mlpm) {
    if (err) mlpm = {}
 
    getSchema(mlpm, function(err, schema) {
      if (err) return log.error(err)
 
      prompt.start()
      prompt.get(schema, function (err, result) {
        if (err) return log.error(err)
 
        save(_.extend(mlpm, result))
      })
    })
  })
}
 
init.usage = 'mlpm init'
 
module.exports.command = init