mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2024-12-28 17:02:24 -05:00
176 lines
5.5 KiB
JavaScript
176 lines
5.5 KiB
JavaScript
/*
|
|
* Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
|
|
* http://paperjs.org/
|
|
*
|
|
* Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey
|
|
* http://juerglehni.com/ & https://puckey.studio/
|
|
*
|
|
* Distributed under the MIT license. See LICENSE file for details.
|
|
*
|
|
* All rights reserved.
|
|
*/
|
|
|
|
var gulp = require('gulp'),
|
|
path = require('path'),
|
|
fs = require('fs'),
|
|
del = require('del'),
|
|
run = require('run-sequence'),
|
|
git = require('gulp-git-streamed'),
|
|
shell = require('gulp-shell'),
|
|
merge = require('merge-stream'),
|
|
rename = require('gulp-rename'),
|
|
jsonEditor = require('gulp-json-editor'),
|
|
options = require('../utils/options.js');
|
|
|
|
var packages = ['paper-jsdom', 'paper-jsdom-canvas'],
|
|
sitePath = path.resolve('../paperjs.org'),
|
|
referencePath = sitePath + '/content/08-Reference',
|
|
downloadPath = sitePath + '/content/11-Download',
|
|
assetPath = sitePath + '/assets/js',
|
|
releaseMessage = null,
|
|
jsonOptions = {
|
|
end_with_newline: true
|
|
};
|
|
|
|
gulp.task('publish', function(callback) {
|
|
if (options.branch !== 'develop') {
|
|
throw new Error('Publishing is only allowed on the develop branch.');
|
|
}
|
|
// publish:website comes before publish:release, so paperjs.zip file is gone
|
|
// before npm publish:
|
|
run(
|
|
'publish:json',
|
|
'publish:dist',
|
|
'publish:packages',
|
|
'publish:commit',
|
|
'publish:website',
|
|
'publish:release',
|
|
'publish:load',
|
|
callback
|
|
);
|
|
});
|
|
|
|
gulp.task('publish:version', function() {
|
|
// Reset the version value since we're executing this on the develop branch,
|
|
// but we don't wan the published version suffixed with '-develop'.
|
|
options.resetVersion();
|
|
releaseMessage = 'Release version ' + options.version;
|
|
});
|
|
|
|
gulp.task('publish:json', ['publish:version'], function() {
|
|
return gulp.src(['package.json'])
|
|
.pipe(jsonEditor({
|
|
version: options.version
|
|
}, jsonOptions))
|
|
.pipe(gulp.dest('.'));
|
|
});
|
|
|
|
gulp.task('publish:dist', ['zip']);
|
|
|
|
gulp.task('publish:commit', ['publish:version'], function() {
|
|
return gulp.src('.')
|
|
.pipe(git.checkout('develop'))
|
|
.pipe(git.add())
|
|
.pipe(git.commit(releaseMessage))
|
|
.pipe(git.tag('v' + options.version, releaseMessage));
|
|
});
|
|
|
|
gulp.task('publish:release', function() {
|
|
return gulp.src('.')
|
|
.pipe(git.checkout('master'))
|
|
.pipe(git.merge('develop', { args: '-X theirs' }))
|
|
.pipe(git.push('origin', ['master', 'develop'], { args: '--tags' }))
|
|
.pipe(shell('npm publish'));
|
|
});
|
|
|
|
gulp.task('publish:packages',
|
|
packages.map(function(name) {
|
|
return 'publish:packages:' + name;
|
|
})
|
|
);
|
|
|
|
packages.forEach(function(name) {
|
|
gulp.task('publish:packages:' + name, ['publish:version'], function() {
|
|
var path = 'packages/' + name,
|
|
opts = { cwd: path };
|
|
return gulp.src(['package.json'], opts)
|
|
.pipe(jsonEditor({
|
|
version: options.version,
|
|
dependencies: {
|
|
paper: options.version
|
|
}
|
|
}, jsonOptions))
|
|
.pipe(gulp.dest(path))
|
|
.pipe(git.add(opts))
|
|
.pipe(git.commit(releaseMessage, opts))
|
|
.pipe(git.tag('v' + options.version, releaseMessage, opts))
|
|
.pipe(git.push('origin', 'master', { args: '--tags', cwd: path }))
|
|
.pipe(shell('npm publish', opts));
|
|
});
|
|
});
|
|
|
|
gulp.task('publish:website', function(callback) {
|
|
if (fs.lstatSync(sitePath).isDirectory()) {
|
|
run(
|
|
'publish:website:build',
|
|
'publish:website:push',
|
|
callback
|
|
);
|
|
}
|
|
});
|
|
|
|
gulp.task('publish:website:build', [
|
|
'publish:website:json', 'publish:website:docs',
|
|
'publish:website:zip', 'publish:website:assets'
|
|
]);
|
|
|
|
gulp.task('publish:website:json', ['publish:version'], function() {
|
|
return gulp.src([sitePath + '/package.json'])
|
|
.pipe(jsonEditor({
|
|
version: options.version
|
|
}, jsonOptions))
|
|
.pipe(gulp.dest(sitePath));
|
|
});
|
|
|
|
gulp.task('publish:website:docs:clean', function() {
|
|
return del([ referencePath + '/*' ], { force: true });
|
|
});
|
|
|
|
gulp.task('publish:website:docs',
|
|
['publish:version', 'publish:website:docs:clean', 'docs:server'],
|
|
function() {
|
|
return gulp.src('dist/serverdocs/**')
|
|
.pipe(gulp.dest(referencePath));
|
|
});
|
|
|
|
gulp.task('publish:website:zip', ['publish:version'], function() {
|
|
return gulp.src('dist/paperjs.zip')
|
|
.pipe(rename({ suffix: '-v' + options.version }))
|
|
.pipe(gulp.dest(downloadPath));
|
|
});
|
|
|
|
gulp.task('publish:website:assets', function() {
|
|
// Always delete the old asset first, in case it's a symlink which Gulp
|
|
// doesn't handle well.
|
|
fs.unlinkSync(assetPath + '/paper.js');
|
|
return gulp.src('dist/paper-full.js')
|
|
.pipe(rename({ basename: 'paper' }))
|
|
.pipe(gulp.dest(assetPath));
|
|
});
|
|
|
|
gulp.task('publish:website:push', ['publish:version'], function() {
|
|
var opts = { cwd: sitePath };
|
|
return gulp.src(sitePath)
|
|
.pipe(git.add(opts))
|
|
.pipe(git.commit(releaseMessage, opts))
|
|
.pipe(git.tag('v' + options.version, releaseMessage, opts))
|
|
.pipe(git.push('origin', 'master', { args: '--tags', cwd: sitePath }));
|
|
});
|
|
|
|
gulp.task('publish:load', ['load'], function() {
|
|
return gulp.src('dist')
|
|
.pipe(git.checkout('develop'))
|
|
.pipe(git.add())
|
|
.pipe(git.commit('Switch back to load.js versions on develop branch.'))
|
|
.pipe(git.push('origin', 'develop'));
|
|
});
|