mirror of
https://github.com/Mibew/mibew_slack.git
synced 2024-11-15 08:44:20 +03:00
96 lines
2.7 KiB
JavaScript
96 lines
2.7 KiB
JavaScript
var fs = require('fs'),
|
|
https = require('https'),
|
|
exec = require('child_process').exec,
|
|
eventStream = require('event-stream'),
|
|
gulp = require('gulp'),
|
|
chmod = require('gulp-chmod'),
|
|
zip = require('gulp-zip'),
|
|
tar = require('gulp-tar'),
|
|
gzip = require('gulp-gzip'),
|
|
rename = require('gulp-rename');
|
|
|
|
var config = {
|
|
getComposerUrl: 'https://getcomposer.org/installer',
|
|
phpBin: 'php -d "suhosin.executor.include.whitelist = phar"',
|
|
package: require('./composer.json')
|
|
}
|
|
|
|
// Cleans all built files
|
|
gulp.task('clean', function(callback) {
|
|
del([
|
|
'release',
|
|
], callback);
|
|
});
|
|
|
|
// Get and install PHP Composer
|
|
gulp.task('get-composer', function(callback) {
|
|
// Check if Composer already in place
|
|
if (fs.existsSync('./composer.phar')) {
|
|
callback(null);
|
|
|
|
return;
|
|
}
|
|
|
|
// Get installer from the internet
|
|
https.get(config.getComposerUrl, function(response) {
|
|
// Run PHP to install Composer
|
|
var php = exec(config.phpBin, function(error, stdout, stderr) {
|
|
callback(error ? stderr : null);
|
|
});
|
|
// Pass installer code to PHP via STDIN
|
|
response.pipe(php.stdin);
|
|
});
|
|
});
|
|
|
|
// Install Composer dependencies excluding development ones
|
|
gulp.task('composer-install', ['get-composer'], function(callback) {
|
|
exec(config.phpBin + ' composer.phar install --no-dev', function(error, stdout, stderr) {
|
|
callback(error ? stderr : null);
|
|
});
|
|
});
|
|
|
|
// Install all Composer dependencies
|
|
gulp.task('composer-install-dev', ['get-composer'], function(callback) {
|
|
exec(config.phpBin + ' composer.phar install', function(error, stdout, stderr) {
|
|
callback(error ? stderr : null);
|
|
});
|
|
});
|
|
|
|
gulp.task('prepare-release', function() {
|
|
var version = require('./package.json').version;
|
|
|
|
return eventStream.merge(
|
|
getSources()
|
|
.pipe(zip('slack-' + version + '.zip')),
|
|
getSources()
|
|
.pipe(tar('slack-' + version + '.tar'))
|
|
.pipe(gzip())
|
|
)
|
|
.pipe(chmod(644))
|
|
.pipe(gulp.dest('release'));
|
|
});
|
|
|
|
// Builds and packs plugins sources
|
|
gulp.task('default', ['composer-install','prepare-release'], function() {
|
|
// The "default" task is just an alias for "prepare-release" task.
|
|
});
|
|
|
|
/**
|
|
* Returns files stream with the plugin sources.
|
|
*
|
|
* @returns {Object} Stream with VinylFS files.
|
|
*/
|
|
var getSources = function() {
|
|
return gulp.src([
|
|
'Plugin.php',
|
|
'README.md',
|
|
'LICENSE',
|
|
'vendor/**/*.*'
|
|
],
|
|
{base: './'}
|
|
)
|
|
.pipe(rename(function(path) {
|
|
path.dirname = 'Mibew/Mibew/Plugin/Slack/' + path.dirname;
|
|
}));
|
|
}
|