mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-30 14:22:07 +03:00
c3f9233165
refs https://linear.app/tryghost/issue/CORE-35/refactor-route-and-redirect-settings - i18n is an old pattern we are getting rid of. By removing it here we get rid of an extra dependancy on frontend's "proxy" module
39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
const yaml = require('js-yaml');
|
|
const debug = require('@tryghost/debug')('frontend:services:settings:yaml-parser');
|
|
const tpl = require('@tryghost/tpl');
|
|
const errors = require('@tryghost/errors');
|
|
|
|
const messages = {
|
|
yamlParsing: {
|
|
error: 'Could not parse {file}: {context}.',
|
|
help: 'Check your {file} file for typos and fix the named issues.'
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Takes a YAML file, parses it and returns a JSON Object
|
|
* @param {YAML} file the YAML file utf8 encoded
|
|
* @param {String} fileName the name of the file incl. extension
|
|
* @returns {Object} parsed
|
|
*/
|
|
module.exports = function parseYaml(file, fileName) {
|
|
try {
|
|
const parsed = yaml.load(file);
|
|
|
|
debug('YAML settings file parsed:', fileName);
|
|
|
|
return parsed;
|
|
} catch (error) {
|
|
// CASE: parsing failed, `js-yaml` tells us exactly what and where in the
|
|
// `reason` property as well as in the message.
|
|
// As the file uploaded is invalid, the person uploading must fix this - it's a 4xx error
|
|
throw new errors.IncorrectUsageError({
|
|
message: tpl(messages.yamlParsing.error, {file: fileName, context: error.reason}),
|
|
code: 'YAML_PARSER_ERROR',
|
|
context: error.message,
|
|
err: error,
|
|
help: tpl(messages.yamlParsing.help, {file: fileName})
|
|
});
|
|
}
|
|
};
|