Browse Source

Add parameter to get extension's l10n bundle in dev mode

tags/7.5
Grégoire Aubert 5 years ago
parent
commit
5aedc697b7
2 changed files with 30 additions and 17 deletions
  1. 2
    1
      server/sonar-web/scripts/start.js
  2. 28
    16
      server/sonar-web/scripts/utils/getMessages.js

+ 2
- 1
server/sonar-web/scripts/start.js View File

@@ -40,6 +40,7 @@ const proxy = process.env.PROXY || 'http://localhost:9000';

// Force start script to proxy l10n request to the server (can be useful when working with plugins/extensions)
const l10nCompiledFlag = process.argv.findIndex(val => val === 'l10nCompiled') >= 0;
const l10nExtensions = process.argv.findIndex(val => val === 'l10nExtensions') >= 0;

const compiler = setupCompiler(host, port, protocol);
runDevServer(compiler, host, port, protocol);
@@ -87,7 +88,7 @@ function runDevServer(compiler, host, port, protocol) {
app.use(errorOverlayMiddleware());
if (!l10nCompiledFlag) {
app.get('/api/l10n/index', (req, res) => {
getMessages()
getMessages(l10nExtensions)
.then(messages => res.json({ effectiveLocale: 'en', messages }))
.catch(() => res.status(500));
});

+ 28
- 16
server/sonar-web/scripts/utils/getMessages.js View File

@@ -23,23 +23,35 @@ const { promisify } = require('util');

const readFileAsync = promisify(fs.readFile);

const filename = path.resolve(
__dirname,
'../../../../sonar-core/src/main/resources/org/sonar/l10n/core.properties'
);
const filename = '../../../../sonar-core/src/main/resources/org/sonar/l10n/core.properties';

function getMessages() {
return readFileAsync(filename, 'utf-8').then(content => {
const messages = {};
const lines = content.split('\n');
lines.forEach(line => {
const parts = line.split('=');
if (parts.length > 1) {
messages[parts[0]] = parts.slice(1).join('=');
}
});
return messages;
});
const extensionsFilenames = [
'../../../../private/core-extension-billing/src/main/resources/org/sonar/l10n/billing.properties',
'../../../../private/core-extension-governance/src/main/resources/org/sonar/l10n/governance.properties',
'../../../../private/core-extension-license/src/main/resources/org/sonar/l10n/license.properties'
];

function getFileMessage(filename) {
return readFileAsync(path.resolve(__dirname, filename), 'utf-8').then(
content => {
const messages = {};
const lines = content.split('\n');
lines.forEach(line => {
const parts = line.split('=');
if (parts.length > 1) {
messages[parts[0]] = parts.slice(1).join('=');
}
});
return messages;
},
() => ({})
);
}

function getMessages(l10nExtensions) {
return Promise.all(
[filename, ...extensionsFilenames].map(filename => getFileMessage(filename))
).then(filesMessages => filesMessages.reduce((acc, messages) => ({ ...acc, ...messages }), {}));
}

module.exports = getMessages;

Loading…
Cancel
Save