all files / lib/profile/ setProfile.js

96.55% Statements 28/29
80% Branches 8/10
100% Functions 3/3
96.55% Lines 28/29
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                                       
'use strict';
 
var path = require('path');
var fs = require('graceful-fs');
var _ = require('lodash');
var ini = require('ini');
var inquirer = require('inquirer');
 
var fecom = require('../fecom');
var questions = require('./questions');
var initProfile = require('./initProfile');
 
function getUserHome() {
  return process.env[('win32' === process.platform) ? 'USERPROFILE' : 'HOME'];
}
 
module.exports = function (key, value) {
  var toBeAsked = _.find(questions, { name: key });
  var profileFile = path.join(getUserHome(), '.fecomrc');
  var profile = {};
 
  if (!key) {
    throw new Error('Must specify a key param');
  }
 
  if (!toBeAsked) {
    throw new Error('Cannot set value of ' + key);
  }
 
  Iif (!fs.existsSync(profileFile)) {
    return initProfile();
  }
 
  profile = ini.parse(fs.readFileSync(profileFile, 'utf-8'));
 
  if (!value) {
    return inquirer.prompt([toBeAsked])
      .then(function (answers) {
        profile[key] = answers[key];
        fs.writeFileSync(profileFile, ini.stringify(profile));
        return profile;
      });
  }
 
  profile[key] = value;
  fs.writeFileSync(profileFile, ini.stringify(profile));
  return fecom.async(profile);
};