'use strict';

var grunt = require('grunt');

var src = 'npm-react/';
var dest = 'build/npm-react/';
var modSrc = 'build/modules/';
var lib = dest + 'lib/';

function buildRelease() {
  // delete build/react-core for fresh start
  grunt.file.exists(dest) && grunt.file.delete(dest);

  // mkdir -p build/react-core/lib
  grunt.file.mkdir(lib);

  // Copy everything over
  // console.log(grunt.file.expandMapping(src + '**/*', dest, {flatten: true}));
  grunt.file.expandMapping(src + '**/*', dest, {flatten: true}).forEach(function(mapping) {
    var src = mapping.src[0];
    var dest = mapping.dest;
    if (grunt.file.isDir(src)) {
      grunt.file.mkdir(dest);
    } else {
      grunt.file.copy(src, dest);
    }
  });

  // copy build/modules/*.js to build/react-core/lib
  grunt.file.expandMapping(modSrc + '*.js', lib, { flatten: true }).forEach(function(mapping) {
    grunt.file.copy(mapping.src[0], mapping.dest);
  });

  // modify build/react-core/package.json to set version ##
  var pkg = grunt.file.readJSON(dest + 'package.json');
  pkg.version = grunt.config.data.pkg.version;
  grunt.file.write(dest + 'package.json', JSON.stringify(pkg, null, 2));
}

function buildDev() {
  // TODO: same as above except different destination
}

module.exports = {
  buildRelease: buildRelease,
  buildDev: buildDev
};
