Skip to content

Commit

Permalink
Merge pull request #298 from ckeditor/t/296
Browse files Browse the repository at this point in the history
Other: Removed gulp dependency across the whole project. Closes #296.

Now all packages use only npm scripts. Depending on usage you might either create a `"script"` entry in `pacakge.json` to invoke bin executables or require the library into a script.

* Package `ckeditor5-dev-env` exposes new `translations` binary.
* Package `ckeditor5-dev-tests` exposes new `test:manual` binary.
* Removed `gulp-jsdoc3` from `ckeditor5-dev-docs`. Now `jsdoc` is invoked directly.
* Removed `options` param from logger methods. Logger no longer uses `gutil.log` method.

BREAKING CHANGE: Gulp tasks were removed. New npm scripts were introduced.
  • Loading branch information
Reinmar committed Nov 13, 2017
2 parents 405b514 + b521b89 commit 723bee5
Show file tree
Hide file tree
Showing 26 changed files with 316 additions and 234 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ npm run coverage
## Releasing

1. Fetch all changes and switch to `master`!
1. Execute `gulp changelog`.
1. Execute `npm run changelog`.
* At the current stage, a single change will be added to all packages which it touched. Sometimes, this means that in one of these packages the entry will not have much sense. Browse the changes, check if they are relevant.
* If not and the package should not be released, just type "skip". However, this is not the best option because Lerna will also recognised this package as changed and will try to release it.
* If the changes are a bit irrelevant, but the package still should be released, pick the "patch" bump, remove all the irrelevant entries from the changelog and if it became empty after that, add the "Internal changes only (updated dependencies, documentation, etc.)" text.
Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"private": true,
"devDependencies": {
"@ckeditor/ckeditor5-dev-env": "^6.0.0",
"chalk": "^2.1.0",
"eslint": "^4.8.0",
"eslint-config-ckeditor5": "^1.0.6",
"gulp": "^3.9.1",
"husky": "^0.14.3",
"istanbul": "^0.4.4",
"lerna": "^2.2.0",
Expand All @@ -23,6 +23,7 @@
"scripts": {
"test": "mocha `./scripts/get-test-directories.sh` --recursive",
"coverage": "istanbul cover _mocha `./scripts/get-test-directories.sh` -- --recursive",
"changelog": "node ./scripts/changelog.js",
"lint": "eslint --quiet '**/*.js'",
"precommit": "lint-staged"
},
Expand All @@ -31,5 +32,8 @@
"eslint --quiet"
]
},
"eslintIgnore": [
"coverage/**"
],
"version": "0.0.36"
}
2 changes: 1 addition & 1 deletion packages/ckeditor5-dev-docs/bin/publish-nightly.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ exec( `git clone ${ mainRepoUrl }.git` );

// Build the documentation.
console.log( 'Building documentation...' );
exec( 'gulp docs --production' );
exec( 'npm run docs -- --production' );

console.log( 'Copying files...' );

Expand Down
84 changes: 56 additions & 28 deletions packages/ckeditor5-dev-docs/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@

'use strict';

const gulp = require( 'gulp' );
const jsdoc = require( 'gulp-jsdoc3' );
const fs = require( 'fs' );
const tmp = require( 'tmp' );
const map = require( 'map-stream' );
const vfs = require( 'vinyl-fs' );

const { tools } = require( '@ckeditor/ckeditor5-dev-utils' );

module.exports = {
build
Expand Down Expand Up @@ -34,35 +38,59 @@ function build( config ) {
process.env.JSDOC_VALIDATE_ONLY = true;
}

const jsDocConfig = {
opts: {
encoding: 'utf8',
recurse: true,
access: 'all',
template: 'templates/silent'
},
plugins: [
require.resolve( 'jsdoc/plugins/markdown' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/export-fixer/export-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/custom-tags/error' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/custom-tags/observable' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/observable-event-provider' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/relation-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/longname-fixer/longname-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/event-extender/event-extender' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/validator/validator' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/utils/doclet-logger' )
]
};
const files = [];

return new Promise( ( resolve, reject ) => {
gulp.src( sourceFiles, { read: false } )
.pipe( jsdoc( jsDocConfig, result => {
if ( result instanceof Error ) {
return reject( result.message );
}
vfs.src( sourceFiles )
.pipe( map( ( file, callback ) => {
files.push( file.path );
callback( null, file );
} ).on( 'end', () => {
const jsDocConfig = {
plugins: [
require.resolve( 'jsdoc/plugins/markdown' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/export-fixer/export-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/custom-tags/error' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/custom-tags/observable' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/observable-event-provider' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/relation-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/longname-fixer/longname-fixer' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/event-extender/event-extender' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/validator/validator' ),
require.resolve( '@ckeditor/jsdoc-plugins/lib/utils/doclet-logger' )
],
source: {
include: files
},
opts: {
encoding: 'utf8',
recurse: true,
access: 'all',
template: 'templates/silent'
}
};

const tmpConfig = tmp.fileSync();

fs.writeFile( tmpConfig.name, JSON.stringify( jsDocConfig ), 'utf8', error => {
if ( error ) {
return reject( error );
}

const cmd = require.resolve( 'jsdoc/jsdoc.js' );

console.log( 'JSDoc started...' );

try {
tools.shExec( `${ cmd } -c ${ tmpConfig.name }`, { verbosity: 'info' } );
} catch ( error ) {
return reject( `Error during JSDoc generation: ${ error.message }` );
}

console.log( `Documented ${ files.length } files!` );

return resolve( result );
resolve();
} );
} ) );
} );
}
5 changes: 3 additions & 2 deletions packages/ckeditor5-dev-docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
"dependencies": {
"@ckeditor/ckeditor5-dev-utils": "^4.0.2",
"@ckeditor/jsdoc-plugins": "^1.8.1",
"gulp": "^3.9.1",
"gulp-jsdoc3": "ckeditor/gulp-jsdoc3"
"jsdoc": "3.4.3",
"map-stream": "^0.0.7",
"vinyl-fs": "^2.4.4"
},
"engines": {
"node": ">=6.0.0",
Expand Down
83 changes: 58 additions & 25 deletions packages/ckeditor5-dev-env/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,31 @@ More information about development tools packages can be found at the following
npm i --save-dev @ckeditor/ckeditor5-dev-env
```

Then add tasks to your `gulpfile.js`:
Then create a script that run tasks:

```js
// Generate changelog for the current package.
gulp.task( 'changelog:self', () => {
return require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSinglePackage();
} );

// Generate changelog for all dependencies (repository using multiple repositories).
gulp.task( 'changelog:packages', () => {
return require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSubRepositories( /* options */ );
} );

// Generate changelog for all packages (repository contains multiple packages).
gulp.task( 'changelog:packages', () => {
return require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSubPackages( /* options */ );
} );

// Create release for the current package.
gulp.task( 'release:self', () => {
return require( '@ckeditor/ckeditor5-dev-env' ).releaseRepository();
} );

// Create release for all dependencies.
gulp.task( 'release:packages', () => {
return require( '@ckeditor/ckeditor5-dev-env' ).releaseSubRepositories( /* options */ );
} );
// scripts/changelog-self.js: Generate changelog for the current package.
require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSinglePackage();
```

```js
// scripts/changelog-repos.js: Generate changelog for all dependencies (repository using multiple repositories).
require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSubRepositories( /* options */ );
```

```js
// scripts/changelog-packages.js: Generate changelog for all packages (repository contains multiple packages).
require( '@ckeditor/ckeditor5-dev-env' ).generateChangelogForSubPackages( /* options */ );
```

```js
// scripts/release-self.js: Create release for the current package.
require( '@ckeditor/ckeditor5-dev-env' ).releaseRepository();
```

```js
// scripts/release-packages.js: Create release for all dependencies.
require( '@ckeditor/ckeditor5-dev-env' ).releaseSubRepositories( /* options */ );
```

### Generating changelog
Expand All @@ -64,6 +62,41 @@ The process implemented by the tool:

Notes for the release are taken from the changelog.

## Translation tools

Available tasks:
- `collect` - Collects translation strings ( from `t()` calls ) and stores them in ckeditor5/build/.transifex directory.
- `upload` - Uploads translations to the Transifex from collected files.
- `download` - Downloads translations from the Transifex for each package and language.

### Usage

```
npm i --save-dev @ckeditor/ckeditor5-dev-env
```

Then use `ckeditor5-dev-env-translations` command:

```
# directly from command line:
node ./node_modules/bin/ckeditor5-dev-env-translations collect
# using npx:
npx ckeditor5-dev-env-translations collect
```

Or add to `package.json` scripts:

```
{
"scripts": {
"translations:collect": "ckeditor5-dev-env-translations collect",
"translations:download": "ckeditor5-dev-env-translations download",
"translations:upload": "ckeditor5-dev-env-translations upload"
}
}
```

## Changelog

See the [`CHANGELOG.md`](https://github.com/ckeditor/ckeditor5-dev/blob/master/packages/ckeditor5-dev-env/CHANGELOG.md) file.
Expand Down
59 changes: 59 additions & 0 deletions packages/ckeditor5-dev-env/bin/translations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/usr/bin/env node

/**
* @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md.
*/

'use strict';

const chalk = require( 'chalk' );

const task = process.argv[ 2 ];

const tasks = {
/**
* Collects translation strings ( from `t()` calls ) and stores them in ckeditor5/build/.transifex directory.
*/
collect() {
const collectTranslations = require( './../lib/translations/collect' );

collectTranslations();
},

/**
* Uploads translation strings on the Transifex server.
*
* @returns {Promise}
*/
upload() {
const uploadTranslations = require( './../lib/translations/upload' );
const getToken = require( './../lib/translations/gettoken' );

return getToken()
.then( credentials => uploadTranslations( credentials ) );
},

/**
* Download translations from the Transifex server.
*
* @returns {Promise}
*/
download() {
const downloadTranslations = require( './../lib/translations/download' );
const getToken = require( './../lib/translations/gettoken' );

return getToken()
.then( credentials => downloadTranslations( credentials ) );
}
};

const taskNames = Object.keys( tasks );

if ( !task || !tasks[ task ] ) {
console.log( `Please provide valid task name. Available tasks: ${ taskNames.map( task => chalk.bold( task ) ).join( ', ' ) }.` );

process.exit( 1 );
}

tasks[ task ]();
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ const chalk = require( 'chalk' );
const { logger } = require( '@ckeditor/ckeditor5-dev-utils' );
const utils = require( './transform-commit-utils' );

// A size of indent for a log. The number is equal to length of the Gulp log string:
// '[XX:YY:ZZ] * 1234567 ', where '1234567' is a short commit id.
const INDENT_SIZE = 21;
// A size of indent for a log. The number is equal to length of the log string:
// '* 1234567 ', where '1234567' is a short commit id.
const INDENT_SIZE = 10;

/**
* Parses a single commit:
Expand Down
3 changes: 3 additions & 0 deletions packages/ckeditor5-dev-env/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
"node": ">=6.0.0",
"npm": ">=3.0.0"
},
"bin": {
"ckeditor5-dev-env-translations": "./bin/translations.js"
},
"author": "CKSource (http://cksource.com/)",
"license": "(GPL-2.0 OR LGPL-2.1 OR MPL-1.1)",
"homepage": "https://github.com/ckeditor/ckeditor5-dev/tree/master/packages/ckeditor5-dev-env",
Expand Down

0 comments on commit 723bee5

Please sign in to comment.