mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
var _ = require('lodash');
|
|
var path = require('path');
|
|
var Q = require('q');
|
|
var fs = require('./utils/fs');
|
|
|
|
var BaseGenerator = function(book) {
|
|
this.book = book;
|
|
|
|
Object.defineProperty(this, 'options', {
|
|
get: function () {
|
|
return this.book.options;
|
|
}
|
|
});
|
|
|
|
_.bindAll(this);
|
|
};
|
|
|
|
BaseGenerator.prototype.callHook = function(name, data) {
|
|
return this.book.callHook(name, data);
|
|
};
|
|
|
|
// Prepare the genertor
|
|
BaseGenerator.prototype.prepare = function() {
|
|
var that = this;
|
|
|
|
return that.callHook('init');
|
|
};
|
|
|
|
// Write a parsed file to the output
|
|
BaseGenerator.prototype.convertFile = function(input) {
|
|
return Q.reject(new Error('Could not convert '+input));
|
|
};
|
|
|
|
// Copy file to the output (non parsable)
|
|
BaseGenerator.prototype.transferFile = function(input) {
|
|
return fs.copy(
|
|
this.book.resolve(input),
|
|
path.join(this.options.output, input)
|
|
);
|
|
};
|
|
|
|
// Copy a folder to the output
|
|
BaseGenerator.prototype.transferFolder = function(input) {
|
|
return fs.mkdirp(
|
|
path.join(this.book.options.output, input)
|
|
);
|
|
};
|
|
|
|
// Copy the cover picture
|
|
BaseGenerator.prototype.copyCover = function() {
|
|
var that = this;
|
|
|
|
return Q.all([
|
|
fs.copy(that.book.resolve('cover.jpg'), path.join(that.options.output, 'cover.jpg')),
|
|
fs.copy(that.book.resolve('cover_small.jpg'), path.join(that.options.output, 'cover_small.jpg'))
|
|
])
|
|
.fail(function() {
|
|
// If orignaly from multi-lang, try copy from parent
|
|
if (!that.book.isSubBook()) return;
|
|
|
|
return Q.all([
|
|
fs.copy(path.join(that.book.parentRoot(), 'cover.jpg'), path.join(that.options.output, 'cover.jpg')),
|
|
fs.copy(path.join(that.book.parentRoot(), 'cover_small.jpg'), path.join(that.options.output, 'cover_small.jpg'))
|
|
]);
|
|
})
|
|
.fail(function() {
|
|
return Q();
|
|
});
|
|
};
|
|
|
|
// At teh end of the generation
|
|
BaseGenerator.prototype.finish = function() {
|
|
return Q.reject(new Error('Could not finish generation'));
|
|
};
|
|
|
|
module.exports = BaseGenerator;
|