%PDF- %PDF-
| Direktori : /var/www/projetos/stb.ind.br/wp-content/themes/stb/node_modules/node-wp-i18n/lib/ |
| Current File : /var/www/projetos/stb.ind.br/wp-content/themes/stb/node_modules/node-wp-i18n/lib/makepot.js |
/**
* node-wp-i18n
* https://github.com/cedaro/node-wp-i18n
*
* @copyright Copyright (c) 2015 Cedaro, LLC
* @license MIT
*/
'use strict';
var _ = require('lodash');
var mkdirp = require('mkdirp');
var msgMerge = require('./msgmerge');
var path = require('path');
var Promise = require('bluebird');
var util = require('./util');
var WPPackage = require('./package');
var toolsPath = path.resolve(__dirname, '../bin/php/');
/**
* Create a POT file.
*
* @param {Array} options
* @returns {Promise}
*/
module.exports = function(options) {
options = _.merge({
cwd: process.cwd(),
domainPath: '',
exclude: [],
include: [],
mainFile: '',
potComments: '',
potFile: '',
potHeaders: {},
processPot: null,
type: '',
updateTimestamp: true,
updatePoFiles: false
}, options);
var wpPackage = new WPPackage(options.cwd, options.type);
if ('' !== options.mainFile) {
wpPackage.setMainFile(options.mainFile);
}
if ('' !== options.domainPath) {
wpPackage.setDomainPath(options.domainPath);
}
if ('' !== options.potFile) {
wpPackage.setPotFile(options.potFile);
}
// Create the domain path directory if it doesn't exist.
mkdirp.sync(wpPackage.getPath(wpPackage.getDomainPath()));
// Exclude the node_modules directory by default.
options.exclude.push('node_modules/.*');
var originalPot = wpPackage.getPot();
if (originalPot.fileExists()) {
originalPot.parse();
}
return util.execFile('php', [
path.resolve(toolsPath, 'node-makepot.php'),
wpPackage.getType(),
wpPackage.getPath(),
wpPackage.getPotFilename(),
wpPackage.getSlug(),
wpPackage.getMainFile(),
options.exclude.join(','),
options.include.join(',')
])
.then(function() {
var pot = wpPackage.getPot();
if (pot.fileExists()) {
pot.parse()
.setFileComment(options.potComments)
.setHeaders(options.potHeaders);
// Allow the POT file to be modified with a callback.
if ('function' === typeof options.processPot) {
pot.contents = options.processPot.call(pot, pot.contents, options);
}
// Determine if the creation date is the only thing that changed.
if (!options.updateTimestamp && pot.sameAs(originalPot)) {
pot.setHeader('pot-creation-date', originalPot.initialDate);
}
pot.save();
}
return Promise.resolve(wpPackage);
})
.then(function maybeUpdatePoFiles(wpPackage) {
if (options.updatePoFiles) {
return msgMerge
.updatePoFiles(wpPackage.getPotFilename())
.return(wpPackage);
}
return Promise.resolve(wpPackage);
})
.catch(function(error) {
console.log(error);
});
};