68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
var path = require('path');
|
|
|
|
var fs = require('./utils/fs');
|
|
var Promise = require('./utils/promise');
|
|
|
|
// Initialize folder structure for a book
|
|
// Read SUMMARY to created the right chapter
|
|
function initBook(book) {
|
|
var extensionToUse = '.md';
|
|
|
|
book.log.info.ln('init book at', book.root);
|
|
return fs.mkdirp(book.root)
|
|
.then(function() {
|
|
return book.config.load();
|
|
})
|
|
.then(function() {
|
|
book.log.info.ln('detect structure from SUMMARY (if it exists)');
|
|
return book.summary.load();
|
|
})
|
|
.then(function() {
|
|
var summary = book.summary.path || 'SUMMARY.md';
|
|
var articles = book.summary.flatten();
|
|
|
|
// Use extension of summary
|
|
extensionToUse = path.extname(summary);
|
|
|
|
// Readme doesn't have a path
|
|
if (!articles[0].path) {
|
|
articles[0].path = 'README' + extensionToUse;
|
|
}
|
|
|
|
// Summary doesn't exists? create one
|
|
if (!book.summary.path) {
|
|
articles.push({
|
|
title: 'Summary',
|
|
path: 'SUMMARY'+extensionToUse
|
|
});
|
|
}
|
|
|
|
// Create files that don't exist
|
|
return Promise.serie(articles, function(article) {
|
|
if (!article.path) return;
|
|
|
|
var absolutePath = book.resolve(article.path);
|
|
|
|
return fs.exists(absolutePath)
|
|
.then(function(exists) {
|
|
if(exists) {
|
|
book.log.info.ln('found', article.path);
|
|
return;
|
|
} else {
|
|
book.log.info.ln('create', article.path);
|
|
}
|
|
|
|
return fs.mkdirp(path.dirname(absolutePath))
|
|
.then(function() {
|
|
return fs.writeFile(absolutePath, '# '+article.title+'\n\n');
|
|
});
|
|
});
|
|
});
|
|
})
|
|
.then(function() {
|
|
book.log.info.ln('initialization is finished');
|
|
});
|
|
}
|
|
|
|
module.exports = initBook;
|