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.
108 lines (85 loc) • 2.72 kB
JavaScript
var gulp = require('gulp');
var fs = require('fs');
var path = require('path');
var util = require('util');
var argv = require('minimist')(process.argv.slice(2));
var rename = require('gulp-rename');
var jeditor = require("gulp-json-editor");
var config = require('config-file')
gulp.task('archetype:miscellaneous', ['config'], function() {
var root = global.getRootPath();
var pomy = global.getPomyPath();
var configPaths = [];
if (!fs.existsSync(path.join(root, "gencert.sh"))) {
configPaths.push(pomy + "gencert.sh");
}
return gulp.src(configPaths)
.pipe(gulp.dest(root));
});
gulp.task('archetype:config', ['archetype:miscellaneous'], function() {
var root = global.getRootPath();
var pomy = global.getPomyPath();
//--group=com.lico --artifact=工程名
// argv.group
// argv.artifact
var params = util._extend({}, argv),
settings = global.settings;
delete params._;
params.artifact = params.artifact || params.name || settings.artifact || path.parse(path.resolve(root)).name;
params.group = params.group || settings.group || path.parse(path.resolve(root, "../")).name;
params.version = global.getVersion(params.version || settings.version || '0.0.1');
params.name = params.group + "." + params.artifact;
util._extend(global.settings, params);
var configPath = null;
if (!fs.existsSync(path.join(root, "pomy.json"))) {
configPath = pomy + "project.json";
} else {
configPath = root + "pomy.json";
}
return gulp.src(configPath)
.pipe(jeditor(params))
.pipe(rename("pomy.json"))
.pipe(gulp.dest(root));
});
gulp.task('archetype:create', ['archetype:config'], function() {
var root = global.getRootPath();
var pomy = global.getPomyPath();
var settings = global.settings;
var dirs = [settings._target.root,
settings._src.root,
settings._src.main,
settings._testunit.js,
settings._src.fonts,
settings._src.images,
settings._src.css,
settings._src.less,
settings._src.scss,
settings._src.sass,
// settings._src.skin,
settings._src.skins,
settings._src.js,
settings._src.template
];
for (var i = 0, len = dirs.length; i < len; i++) {
var dir = dirs[i];
if (!fs.existsSync(path.join(root, dir))) {
fs.mkdirSync(dir);
}
}
var configPath = null;
if (!fs.existsSync(path.join(root, "local.json"))) {
configPath = pomy + "local.json";
} else {
configPath = root + "local.json";
}
return gulp.src(configPath)
.pipe(jeditor({
name: settings.name,
version: settings.version
}))
.pipe(gulp.dest(root));
});
gulp.task('archetype:generate', ['archetype:create'], function(cb) {
cb();
});
;