pomy
Version:
Based on the concept of a project object model (POM), POMY can manage a project's build, reporting and documentation from a central piece of information.
131 lines (112 loc) • 2.97 kB
JavaScript
var
gulp = require('gulp'),
bowerFiles = require('main-bower-files'),
bowerNormalizer = require('gulp-bower-normalize'),
dest = global.settings._dest,
src = global.settings._src,
settings = global.settings,
spawn = require('child_process').spawn,
rename = require('gulp-rename'),
filter = require('gulp-filter'),
path = require('path');
gulp.task('process-samegroup', function(cb) {
var root = global.getRootPath();
var pomy = global.getPomyPath();
var directory = pomy + 'bower_components';
var bowerJson = pomy + 'bower.json';
var overrides = {};
var result = {
dependencies: {},
overrides: {}
};
global.analyzeDep(global.settings, result);
for (var dep in result.dependencies) {
if (dep.indexOf(settings.group) !== 0 || dep === "jre") {
overrides[dep] = {
ignore: true
};
}
}
return gulp.src(bowerFiles({
paths: {
bowerDirectory: directory,
bowerJson: bowerJson
},
overrides: overrides
}), {
base: directory
})
.pipe(filter(["**/*/src/main/**/*", "**/*/classes/**/*"]))
.pipe(rename(function(_path) {
_path.dirname = _path.dirname
.replace(/^([.A-z]*(\/|\\)(src(\/|\\)main|classes)[/]?)/g, path.sep)
.replace(/[.]/g, path.sep);
}))
.pipe(gulp.dest(root + src.main));
});
gulp.task('process-diffgroup', function(cb) {
var root = global.getRootPath();
var pomy = global.getPomyPath();
var directory = pomy + 'bower_components';
var bowerJson = pomy + 'bower.json';
var overrides = {};
var result = {
dependencies: {},
overrides: {}
};
global.analyzeDep(global.settings, result);
for (var dep in result.dependencies) {
if (dep.indexOf(settings.group) === 0 || dep === "jre") {
overrides[dep] = {
ignore: true
};
}
}
return gulp.src(bowerFiles({
paths: {
bowerDirectory: directory,
bowerJson: bowerJson
},
overrides: overrides
}), {
base: directory
})
.pipe(bowerNormalizer({
bowerJson: bowerJson
}))
.pipe(gulp.dest(root + dest.lib));
});
gulp.task('process-sources', ['generate-sources'], function(cb) {
var root = global.getRootPath();
var pomy = global.getPomyPath();
if (settings.repositoryManager === 'npm') {
cb();
} else {
var command = null,
args = [];
if (process.platform === "win32") {
command = "cmd";
args.push("/c");
// args.push("node");
} else {
command = "node";
}
args.push(global.getCommandPath('gulp'));
args.push('process-samegroup');
args.push('process-diffgroup');
args.push('--process');
args.push("child");
var format = spawn(command, args, {
cwd: global.settings.cwd,
stdio: 'inherit'
});
format.on('close', function(code) {
if (code !== 0) {
cb(code);
} else {
cb();
}
});
}
});
;