Files
react/grunt/tasks/gem-react-source.js
Paul O’Shannessy 520c4f96d4 Move react-source gem out of project root
Now it requires a build step. At least the confusing lib directory is
gone though.
2014-07-21 22:56:32 -07:00

62 lines
1.6 KiB
JavaScript

'use strict';
var fs = require('fs');
var grunt = require('grunt');
var src = 'gem-react-source/';
var dest = 'build/gem-react-source/';
var build = dest + 'build/';
var buildFiles = [
'react.js', 'react.min.js', 'JSXTransformer.js',
'react-with-addons.js', 'react-with-addons.min.js'
];
function buildRelease() {
grunt.file.exists(dest) && grunt.file.delete(dest);
// Copy gem-react-source/**/* to build/gem-react-source
var mappings = [].concat(
grunt.file.expandMapping('**/*', dest, {cwd: src})
);
mappings.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);
}
});
// Make built source available inside npm package
grunt.file.mkdir(build);
buildFiles.forEach(function(file) {
grunt.file.copy('build/' + file, build + file);
});
}
function packRelease() {
/*jshint validthis:true */
var done = this.async();
var spawnCmd = {
cmd: 'gem',
args: ['build', 'react-source.gemspec'],
opts: {
cwd: dest
}
};
grunt.util.spawn(spawnCmd, function(err, result) {
// Gem packing does weird things to versions so 0.12.0-alpha becomes
// 0.12.0.pre.alpha. We need to get the filename printed to stdout.
var filename = result.stdout.match(/File: (.*)$/)[1];
var src = 'build/gem-react-source/' + filename;
var dest = 'build/react-source.tgz';
fs.rename(src, dest, done);
});
}
module.exports = {
buildRelease: buildRelease,
packRelease: packRelease
};