Skip to content

Commit

Permalink
Introducing gulp.
Browse files Browse the repository at this point in the history
  • Loading branch information
yurydelendik committed Mar 4, 2016
1 parent e190603 commit 857a914
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 25 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
language: node_js
node_js:
- "0.12"
before_install:
- npm install -g gulp-cli
15 changes: 9 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ PDF.js is built into version 19+ of Firefox, however the extension is still avai

+ The official extension for Chrome can be installed from the [Chrome Web Store](https://chrome.google.com/webstore/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm).
*This extension is maintained by [@Rob--W](https://github.com/Rob--W).*
+ Build Your Own - Get the code as explained below and issue `node make chromium`. Then open
+ Build Your Own - Get the code as explained below and issue `gulp chromium`. Then open
Chrome, go to `Tools > Extension` and load the (unpackaged) extension from the
directory `build/chromium`.

Expand All @@ -51,16 +51,19 @@ To get a local copy of the current code, clone it using git:
$ cd pdf.js

Next, install Node.js via the [official package](http://nodejs.org) or via
[nvm](https://github.com/creationix/nvm). If everything worked out, run
[nvm](https://github.com/creationix/nvm). You need to install the gulp package
globally, see also (gulp's getting started)[https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md#getting-started]:

$ npm install
$ npm install -g gulp-cli

If everything worked out, install all dependencies for PDF.js:

to install all dependencies for PDF.js.
$ npm install

Finally you need to start a local web server as some browsers do not allow opening
PDF files using a file:// URL. Run

$ node make server
$ gulp server

and then you can open

Expand All @@ -75,7 +78,7 @@ It is also possible to view all test PDF files on the right side by opening
In order to bundle all `src/` files into two productions scripts and build the generic
viewer, issue:

$ node make generic
$ gulp generic

This will generate `pdf.js` and `pdf.worker.js` in the `build/generic/build/` directory.
Both scripts are needed but only `pdf.js` needs to be included since `pdf.worker.js` will
Expand Down
103 changes: 103 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
/* Copyright 2016 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* jshint node:true */
/* globals target */

'use strict';

var gulp = require('gulp');
var gutil = require('gulp-util');
var stream = require('stream');

require('./make.js');

function createStringSource(filename, content) {
var source = stream.Readable({ objectMode: true });
source._read = function () {
this.push(new gutil.File({
cwd: '',
base: '',
path: filename,
contents: new Buffer(content)
}));
this.push(null);
};
return source;
}

gulp.task('default', function() {
console.log('Available tasks:');
var tasks = Object.keys(gulp.tasks);
tasks.sort();
tasks.forEach(function (taskName) {
console.log(' ' + taskName);
});
});

gulp.task('server', function () {
console.log();
console.log('### Starting local server');

var WebServer = require('./test/webserver.js').WebServer;
var server = new WebServer();
server.port = 8888;
server.start();
});

gulp.task('makefile', function () {
var makefileContent = 'help:\n\tgulp\n\n';
var targetsNames = [];
for (var i in target) {
makefileContent += i + ':\n\tgulp ' + i + '\n\n';
targetsNames.push(i);
}
makefileContent += '.PHONY: ' + targetsNames.join(' ') + '\n';
return createStringSource('Makefile', makefileContent)
.pipe(gulp.dest('.'));
});

// Getting all shelljs registered tasks and register them with gulp
var gulpContext = false;
for (var taskName in global.target) {
if (taskName in gulp.tasks) {
continue;
}

var task = (function (shellJsTask) {
return function () {
gulpContext = true;
try {
shellJsTask.call(global.target);
} finally {
gulpContext = false;
}
};
})(global.target[taskName]);
gulp.task(taskName, task);
}

Object.keys(gulp.tasks).forEach(function (taskName) {
var oldTask = global.target[taskName] || function () {
gulp.run(taskName);
};

global.target[taskName] = function () {
// The require('shelljs/make') import in make.js will try to execute tasks
// listed in arguments, guarding with gulpContext
if (gulpContext) {
oldTask.call(global.target);
}
};
});
22 changes: 4 additions & 18 deletions make.js
Original file line number Diff line number Diff line change
Expand Up @@ -1477,15 +1477,8 @@ target.mozcentralcheck = function() {
//
// make server
//
target.server = function() {
cd(ROOT_DIR);
echo();
echo('### Starting local server');

var WebServer = require('./test/webserver.js').WebServer;
var server = new WebServer();
server.port = 8888;
server.start();
target.server = function () {
exit(exec('gulp server'));
};

//
Expand Down Expand Up @@ -1529,15 +1522,8 @@ target.clean = function() {
//
// make makefile
//
target.makefile = function() {
var makefileContent = 'help:\n\tnode make\n\n';
var targetsNames = [];
for (var i in target) {
makefileContent += i + ':\n\tnode make ' + i + '\n\n';
targetsNames.push(i);
}
makefileContent += '.PHONY: ' + targetsNames.join(' ') + '\n';
makefileContent.to('Makefile');
target.makefile = function () {
exit(exec('gulp makefile'));
};

//
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
"name": "pdf.js",
"version": "0.8.0",
"devDependencies": {
"gulp": "^3.9.1",
"gulp-util": "^3.0.7",
"jsdoc": "^3.3.0-alpha9",
"jshint": "~2.8.0",
"node-ensure": "^0.0.0",
Expand All @@ -14,7 +16,7 @@
"yargs": "^3.14.0"
},
"scripts": {
"test": "node make lint"
"test": "gulp lint"
},
"repository": {
"type": "git",
Expand Down

0 comments on commit 857a914

Please sign in to comment.