| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- 'use strict';
- const gulp = require( 'gulp' );
- const gutil = require( 'gulp-util' );
- const minimist = require( 'minimist' );
- const path = require( 'path' );
- const merge = require( 'merge-stream' );
- const log = require( '../../lib/log' );
- const tools = require( '../../lib/tools' );
- const git = require( '../../lib/git' );
- module.exports = ( config ) => {
- const ckeditor5Path = process.cwd();
- const packageJSON = require( '../../../package.json' );
- // Configure logging.
- log.configure(
- ( msg ) => gutil.log( msg ),
- ( msg ) => gutil.log( gutil.colors.red( msg ) )
- );
- const tasks = {
- execOnRepositories() {
- // Omit `gulp exec` part of arguments
- const options = minimist( process.argv.slice( 3 ), {
- stopEarly: false,
- } );
- let execTask;
- try {
- if ( options.task ) {
- execTask = require( `./functions/${ options.task }` );
- } else {
- throw new Error( 'Missing task parameter: --task task-name' );
- }
- } catch ( error ) {
- log.err( error );
- }
- if ( execTask ) {
- return exec( execTask, ckeditor5Path, packageJSON, config.WORKSPACE_DIR, options );
- }
- },
- register() {
- gulp.task( 'exec', tasks.execOnRepositories );
- }
- };
- return tasks;
- };
- /**
- * @param {Function} execTask Task to use on each dependency.
- * @param {String} ckeditor5Path Path to main CKEditor5 repository.
- * @param {Object} packageJSON Parsed package.json file from CKEditor5 repository.
- * @param {String} workspaceRoot Relative path to workspace root.
- * @param {Object} params Parameters provided to the task via command-line.
- */
- function exec( execTask, ckeditor5Path, packageJSON, workspaceRoot, params ) {
- const workspaceAbsolutePath = path.join( ckeditor5Path, workspaceRoot );
- // Get all CKEditor dependencies from package.json.
- const dependencies = tools.getCKEditorDependencies( packageJSON.dependencies );
- const mergedStream = merge();
- if ( dependencies ) {
- const directories = tools.getCKE5Directories( workspaceAbsolutePath );
- if ( directories.length ) {
- for ( let dependency in dependencies ) {
- const repositoryURL = dependencies[ dependency ];
- const urlInfo = git.parseRepositoryUrl( repositoryURL );
- const repositoryAbsolutePath = path.join( ckeditor5Path, 'node_modules', dependency );
- // Check if repository's directory already exists.
- if ( directories.indexOf( urlInfo.name ) > -1 ) {
- try {
- log.out( `Executing task on ${ repositoryURL }...` );
- mergedStream.add( execTask( repositoryAbsolutePath, params ) );
- } catch ( error ) {
- log.err( error );
- }
- }
- }
- } else {
- log.out( 'No CKEditor5 plugins in development mode.' );
- }
- } else {
- log.out( 'No CKEditor5 dependencies found in package.json file.' );
- }
- return mergedStream;
- }
|