Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
/* eslint-env node */
var path = require('path');
var fs = require('fs');
var httpRequest = require('http-request');
var acorn = require('acorn');
var acornWalk = require('../node_modules/acorn/dist/walk');
var moment = require('moment');
var nunjucksParser = require('nunjucks').parser;
var nunjucksNodes = require('../node_modules/nunjucks/src/nodes');
module.exports = function(grunt) {
grunt.registerTask('get_localization', 'Get strings from SUMO for localization', function() {
var done = this.async();
var urlTemplate = 'https://support.mozilla.org/{locale}/jsi18n-buddyup/';
var baseDestination = path.join('.', 'app', 'translations');
try {
fs.mkdirSync(baseDestination);
} catch(e) {
// if the directory already exists, fine. Otherwise, re-throw.
if (e.code !== 'EEXIST') {
throw e;
}
async function getTemplatePaths(ctx, opts, templatePath, context) {
const templates = {};
const resolvedPath = await resolvePath(ctx, opts, templatePath, context);
templates[context.concat(templatePath).join(':')] = resolvedPath;
const source = fs.readFileSync(resolvedPath).toString();
const ast = transform(nunjucks.parser.parse(source));
const templateNodes = [];
ast.findAll(nodes.Extends, templateNodes);
ast.findAll(nodes.Include, templateNodes);
ast.findAll(nodes.FromImport, templateNodes);
ast.findAll(nodes.Import, templateNodes);
for (let i = 0; i < templateNodes.length; i++) {
const templateNode = templateNodes[i].template;
/* istanbul ignore if */
if (!templateNode || !templateNode.value) {
throw new Error(`bad template path in ${ctx.resourcePath}: ${JSON.stringify(templateNodes[i])}`);
}
// eslint-disable-next-line no-await-in-loop
const children = await getTemplatePaths(ctx, opts, templateNode.value, context.concat(templatePath));
for (const k in children) {
/* istanbul ignore next */
if (templates[k] && templates[k] !== children[k]) {
var path = require('path');
var fs = require('fs');
var acorn = require('acorn');
var acornWalk = require('../node_modules/acorn/dist/walk');
var moment = require('moment');
var nunjucksParser = require('nunjucks').parser;
var nunjucksNodes = require('../node_modules/nunjucks/src/nodes');
var PO_HEADER = [
'msgid ""',
'msgstr ""',
'"Project-Id-Version: PACKAGE VERSION\\n"',
'"Report-Msgid-Bugs-To: \\n"',
'"POT-Creation-Date: ' + moment().format('YYYY-MM-DD HH:MMZZ') + '\\n"',
'"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"',
'"Last-Translator: Automatically generated\\n"',
'"Language-Team: none\\n"',
'"Language: \\n"',
'"MIME-Version: 1.0\\n"',
'"Content-Type: text/plain; charset=UTF-8\\n"',
'"Content-Transfer-Encoding: 8bit\\n"',
'"X-Generator: Translate Toolkit 1.6.0\\n"',