mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-04 09:32:15 +09:00
#41 단일 브랜치를 지정하여 빌드할 수 있도록 개선.
This commit is contained in:
parent
ab021d75c7
commit
59c151845b
1 changed files with 66 additions and 47 deletions
113
Gruntfile.js
113
Gruntfile.js
|
|
@ -32,14 +32,30 @@ module.exports = function(grunt) {
|
|||
});
|
||||
|
||||
grunt.registerTask('build', '', function(A, B) {
|
||||
if(!A || !B) grunt.fail.warn('Undefined build target.');
|
||||
var _only_export = false;
|
||||
|
||||
if(!A) {
|
||||
grunt.fail.warn('Undefined build target.');
|
||||
} else if(A && !B) {
|
||||
_only_export = true;
|
||||
}
|
||||
|
||||
if(!_only_export) {
|
||||
tasks.push('changed');
|
||||
target = A + '...' + B;
|
||||
version = B;
|
||||
} else {
|
||||
target = A;
|
||||
version = A;
|
||||
}
|
||||
|
||||
var done = this.async();
|
||||
var build_dir = 'build';
|
||||
var archive_full = build_dir + '/xe.' + B + '.tar.gz';
|
||||
var archive_changed = build_dir + '/xe.' + B + '.changed.tar.gz';
|
||||
var diff;
|
||||
var tasks = ['changed', 'krzip', 'syndication'];
|
||||
var archive_full = build_dir + '/xe.' + version + '.tar.gz';
|
||||
var archive_changed = build_dir + '/xe.' + version + '.changed.tar.gz';
|
||||
var diff, target, version;
|
||||
var tasks = ['krzip', 'syndication'];
|
||||
|
||||
var taskDone = function() {
|
||||
tasks.pop();
|
||||
grunt.verbose.writeln('remain tasks : '+tasks.length);
|
||||
|
|
@ -47,7 +63,7 @@ module.exports = function(grunt) {
|
|||
if(tasks.length === 0) {
|
||||
grunt.util.spawn({
|
||||
cmd: "tar",
|
||||
args: ['cfz', 'xe.'+B+'.tar.gz', 'xe/'],
|
||||
args: ['cfz', 'xe.'+version+'.tar.gz', 'xe/'],
|
||||
opts: {
|
||||
cwd: 'build'
|
||||
}
|
||||
|
|
@ -69,61 +85,64 @@ module.exports = function(grunt) {
|
|||
grunt.file.mkdir(build_dir + '/xe');
|
||||
|
||||
grunt.log.subhead('Archiving...');
|
||||
grunt.log.writeln('Target : ' + A + '...' + B);
|
||||
grunt.log.writeln('Target : ' + target);
|
||||
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['diff', '--name-only', A + '...' + B]
|
||||
}, function (error, result, code) {
|
||||
diff = result.stdout;
|
||||
args: ['archive', '--output=build/temp.full.tar', version, '.']
|
||||
}, function (error, result, code){
|
||||
if(!_only_export) {
|
||||
// changed
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['diff', '--name-only', target]
|
||||
}, function (error, result, code) {
|
||||
diff = result.stdout;
|
||||
|
||||
if(diff) {
|
||||
diff = diff.split(grunt.util.linefeed);
|
||||
if(diff) {
|
||||
diff = diff.split(grunt.util.linefeed);
|
||||
}
|
||||
|
||||
// changed
|
||||
if(diff.length) {
|
||||
var args = ['archive', '--prefix=xe/', '-o', 'build/xe.'+version+'.changed.tar.gz', version];
|
||||
args = args.concat(diff);
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: args
|
||||
}, function (error, result, code) {
|
||||
grunt.log.ok('Archived(changed) : ./build/xe.'+version+'.changed.tar.gz');
|
||||
taskDone();
|
||||
});
|
||||
} else {
|
||||
taskDone();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// full
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['archive', '--output=build/temp.full.tar', B, '.']
|
||||
cmd: "tar",
|
||||
args: ['xf', 'build/temp.full.tar', '-C', 'build/xe']
|
||||
}, function (error, result, code) {
|
||||
|
||||
// krzip
|
||||
grunt.util.spawn({
|
||||
cmd: "tar",
|
||||
args: ['xf', 'build/temp.full.tar', '-C', 'build/xe']
|
||||
cmd: "git",
|
||||
args: ['clone', 'git@github.com:xpressengine/module-krzip.git', 'build/xe/modules/module-krzip']
|
||||
}, function (error, result, code) {
|
||||
|
||||
// krzip
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['clone', 'git@github.com:xpressengine/module-krzip.git', 'build/xe/modules/module-krzip']
|
||||
}, function (error, result, code) {
|
||||
grunt.file.delete('build/xe/modules/module-krzip/.git');
|
||||
taskDone();
|
||||
});
|
||||
|
||||
// syndication
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['clone', 'git@github.com:xpressengine/module-syndication.git', 'build/xe/modules/syndication']
|
||||
}, function (error, result, code) {
|
||||
grunt.file.delete('build/xe/modules/syndication/.git');
|
||||
taskDone();
|
||||
});
|
||||
grunt.file.delete('build/xe/modules/module-krzip/.git');
|
||||
taskDone();
|
||||
});
|
||||
|
||||
// changed
|
||||
if(diff.length) {
|
||||
var args = ['archive', '--prefix=xe/', '-o', 'build/xe.'+B+'.changed.tar.gz', B];
|
||||
args = args.concat(diff);
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: args
|
||||
}, function (error, result, code) {
|
||||
grunt.log.ok('Archived(changed) : ./build/xe.'+B+'.changed.tar.gz');
|
||||
taskDone();
|
||||
});
|
||||
} else {
|
||||
// syndication
|
||||
grunt.util.spawn({
|
||||
cmd: "git",
|
||||
args: ['clone', 'git@github.com:xpressengine/module-syndication.git', 'build/xe/modules/syndication']
|
||||
}, function (error, result, code) {
|
||||
grunt.file.delete('build/xe/modules/syndication/.git');
|
||||
taskDone();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue