machines/products/poly-mech/Gruntfile.js
2025-12-25 12:45:23 +01:00

101 lines
14 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.grunt = exports.logger = void 0;
const path = require("path");
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
const debug_1 = require("@plastichub/core/debug");
exports.logger = (0, debug_1.logger)('ph-site');
const compile_1 = require("@plastichub/osr-tasks/tasks/compile");
const product_1 = require("./product");
const config_1 = require("./config");
const log_1 = require("./log");
const pMap = require("p-map");
// const _logger = createSubLogger(logger, logLevel, 'compile:content')
const grunt = (grunt) => {
grunt.loadNpmTasks("grunt-extend-config");
const logLevel = grunt.option('logLevel') || 'warn';
exports.logger.setSettings({ minLevel: logLevel });
const watch = grunt.option('watchContent');
// Pages - src/content/lang/**/*.md
const contentTask = (sourceLanguage, options = {}) => {
const config = {};
const src = `src/content/${sourceLanguage}/**/*.md`;
const cwd = process.cwd();
const dst = path.resolve(`${cwd}/content/${sourceLanguage}`);
const profile = path.resolve(`./.osrl.json`);
const root = path.resolve(`./src/content/${sourceLanguage}`);
const compilerOptions = {
output: dst,
debug: false,
cache: !!grunt.option('cache') || config_1.TASK_COMPILE_CONTENT_CACHE,
watchContent: watch,
module: config_1.OSRL_MODULE_NAME,
profile,
root,
...(options || {}),
env: 'library',
language: 'osr',
format: 'html',
sourceLanguage: sourceLanguage,
logLevel: logLevel,
variables: {
cwd,
targetLanguage: sourceLanguage,
sourceLanguage: sourceLanguage,
i18n: (0, config_1.I18N_STORE)((0, config_1.OSR_ROOT)(), sourceLanguage)
}
};
let defaultOptions = {
src: [src],
options: compilerOptions
};
const onCompiled = (src, dst, content) => content;
const onCompiledDone = async (src, dst, options, content) => {
return await pMap(config_1.LANGUAGES, async (dstLanguage) => {
const opts = {
...defaultOptions.options,
output: path.resolve(`${process.cwd()}/content/${dstLanguage}/`),
sourceLanguage: sourceLanguage,
targetLanguage: dstLanguage,
variables: {
...defaultOptions.options.variables,
cwd: process.cwd(),
i18n: (0, config_1.I18N_STORE)((0, config_1.OSR_ROOT)(), dstLanguage),
sourceLanguage: sourceLanguage,
targetLanguage: dstLanguage,
}
};
const content = await (0, compile_1.createContent)(src, opts);
return content;
}, { concurrency: 1 });
};
config[`content-${sourceLanguage}`] = {
...defaultOptions,
options: {
...defaultOptions.options,
onCompiled: config_1.TRANSLATE_CONTENT ? onCompiled : undefined,
onCompileDone: config_1.TRANSLATE_CONTENT ? onCompiledDone : undefined
}
};
grunt.extendConfig({ compile: config });
grunt.registerTask(`content-${sourceLanguage}`, `compile:content-${sourceLanguage}`);
(0, log_1.writeTaskConfig)(`compile_content-${sourceLanguage}`, config);
};
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
compile: {}
});
contentTask(config_1.I18N_SOURCE_LANGUAGE);
grunt.registerTask('content', ['compile:content-en']);
////////////////////////////////////////////////////////////
// Products
const product_item_tasks = [];
const productTasks = (items) => items.forEach((i) => (0, product_1.productHugoTask)(grunt, i, {}, product_item_tasks));
const _products = (0, product_1.readProducts)(grunt.option('branch') || config_1.RETAIL_DEFAULT_BRANCH);
config_1.TASK_COMPILE_CONTENT && productTasks(_products);
config_1.REGISTER_RETAIL_TASKS && (0, product_1.registerProductTasks)(grunt);
require("@plastichub/osr-tasks").initConfig(grunt, {});
};
exports.grunt = grunt;
module.exports = exports.grunt;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3J1bnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFza3MvR3J1bnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsR0FBRyxDQUFBO0FBQ2pELGtEQUEwRDtBQUM3QyxRQUFBLE1BQU0sR0FBRyxJQUFBLGNBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQTtBQUN4QyxpRUFBd0Y7QUFDeEYsdUNBQStFO0FBQy9FLHFDQUFxTjtBQUNyTiwrQkFBdUM7QUFDdkMsOEJBQTZCO0FBRTdCLHVFQUF1RTtBQUVoRSxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQzdCLEtBQUssQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUN6QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQTtJQUNuRCxjQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMxQyxvQ0FBb0M7SUFFcEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxjQUFjLEVBQUUsVUFBZSxFQUFFLEVBQUUsRUFBRTtRQUN4RCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDakIsTUFBTSxHQUFHLEdBQUcsZUFBZSxjQUFjLFVBQVUsQ0FBQTtRQUNuRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsWUFBWSxjQUFjLEVBQUUsQ0FBQyxDQUFBO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENB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Y0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDOUQsQ0FBQyxDQUFBO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNmLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDeEMsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDLENBQUE7SUFDRixXQUFXLENBQUMsNkJBQW9CLENBQUMsQ0FBQTtJQUNqQyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQTtJQUVyRCw0REFBNEQ7SUFDNUQsWUFBWTtJQUNaLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFBO0lBQzdCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBZSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQTtJQUV6RSxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFZLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSw4QkFBcUIsQ0FBQyxDQUFBO0lBQy9FLDZCQUFvQixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMvQyw4QkFBcUIsSUFBSSxJQUFBLDhCQUFvQixFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDeEQsQ0FBQyxDQUFBO0FBeEZZLFFBQUEsS0FBSyxTQXdGakI7QUFDRCxNQUFNLENBQUMsT0FBTyxHQUFHLGFBQUssQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzICBwYXRoIGZyb20gJ3BhdGgnXG5wcm9jZXNzLmVudlsnTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCddID0gJzAnXG5pbXBvcnQgeyBsb2dnZXIgYXMgX2xvZ2dlciB9IGZyb20gJ0BwbGFzdGljaHViL2NvcmUvZGVidWcnXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gX2xvZ2dlcigncGgtc2l0ZScpXG5pbXBvcnQgeyBjcmVhdGVDb250ZW50LCBJQ29tcGlsZVRhc2tPcHRpb25zIH0gZnJvbSAnQHBsYXN0aWNodWIvb3NyLXRhc2tzL3Rhc2tzL2NvbXBpbGUnXG5pbXBvcnQgeyBwcm9kdWN0SHVnb1Rhc2ssIHJlYWRQcm9kdWN0cywgcmVnaXN0ZXJQcm9kdWN0VGFza3MgfSBmcm9tICcuL3Byb2R1Y3QnXG5pbXBvcnQgeyBPU1JMX01PRFVMRV9OQU1FLCBMQU5HVUFHRVMsIEkxOE5fU1RPUkUsIE9TUl9ST09ULCBUUkFOU0xBVEVfQ09OVEVOVCwgVEFTS19DT01QSUxFX0NPTlRFTlRfQ0FDSEUsIFJFVEFJTF9ERUZBVUxUX0JSQU5DSCwgSTE4Tl9TT1VSQ0VfTEFOR1VBR0UsIFJFR0lTVEVSX1JFVEFJTF9UQVNLUywgVEFTS19DT01QSUxFX0NPTlRFTlQgfSBmcm9tICcuL2NvbmZpZydcbmltcG9ydCB7IHdyaXRlVGFza0NvbmZpZyB9IGZyb20gJy4vbG9nJ1xuaW1wb3J0ICogYXMgcE1hcCBmcm9tICdwLW1hcCdcblxuLy8gY29uc3QgX2xvZ2dlciA9IGNyZWF0ZVN1YkxvZ2dlcihsb2dnZXIsIGxvZ0xldmVsLCAnY29tcGlsZTpjb250ZW50JylcblxuZXhwb3J0IGNvbnN0IGdydW50ID0gKGdydW50KSA9PiB7XG4gIGdydW50LmxvYWROcG1UYXNrcyhcImdydW50LWV4dGVuZC1jb25maWdcIilcbiAgY29uc3QgbG9nTGV2ZWwgPSBncnVudC5vcHRpb24oJ2xvZ0xldmVsJykgfHwgJ3dhcm4nXG4gIGxvZ2dlci5zZXRTZXR0aW5ncyh7IG1pbkxldmVsOiBsb2dMZXZlbCB9KVxuICBjb25zdCB3YXRjaCA9IGdydW50Lm9wdGlvbignd2F0Y2hDb250ZW50JylcbiAgLy8gIFBhZ2VzIC0gc3JjL2NvbnRlbnQvbGFuZy8qKi8qLm1kXG4gIFxuICBjb25zdCBjb250ZW50VGFzayA9IChzb3VyY2VMYW5ndWFnZSwgb3B0aW9uczogYW55ID0ge30pID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB7fVxuICAgIGNvbnN0IHNyYyA9IGBzcmMvY29udGVudC8ke3NvdXJjZUxhbmd1YWdlfS8qKi8qLm1kYFxuICAgIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKClcbiAgICBjb25zdCBkc3QgPSBwYXRoLnJlc29sdmUoYCR7Y3dkfS9jb250ZW50LyR7c291cmNlTGFuZ3VhZ2V9YClcbiAgICBjb25zdCBwcm9maWxlID0gcGF0aC5yZXNvbHZlKGAuLy5vc3JsLmpzb25gKVxuICAgIGNvbnN0IHJvb3QgPSBwYXRoLnJlc29sdmUoYC4vc3JjL2NvbnRlbnQvJHtzb3VyY2VMYW5ndWFnZX1gKVxuICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9uczogSUNvbXBpbGVUYXNrT3B0aW9ucyA9IHtcbiAgICAgIG91dHB1dDogZHN0LFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgICAgY2FjaGU6ICEhZ3J1bnQub3B0aW9uKCdjYWNoZScpIHx8IFRBU0tfQ09NUElMRV9DT05URU5UX0NBQ0hFLFxuICAgICAgd2F0Y2hDb250ZW50OiB3YXRjaCxcbiAgICAgIG1vZHVsZTogT1NSTF9NT0RVTEVfTkFNRSxcbiAgICAgIHByb2ZpbGUsXG4gICAgICByb290LFxuICAgICAgLi4uKG9wdGlvbnMgfHwge30pLFxuICAgICAgZW52OiAnbGlicmFyeScsXG4gICAgICBsYW5ndWFnZTogJ29zcicsXG4gICAgICBmb3JtYXQ6ICdodG1sJyxcbiAgICAgIHNvdXJjZUxhbmd1YWdlOiBzb3VyY2VMYW5ndWFnZSxcbiAgICAgIGxvZ0xldmVsOiBsb2dMZXZlbCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBjd2QsXG4gICAgICAgIHRhcmdldExhbmd1YWdlOiBzb3VyY2VMYW5ndWFnZSxcbiAgICAgICAgc291cmNlTGFuZ3VhZ2U6IHNvdXJjZUxhbmd1YWdlLFxuICAgICAgICBpMThuOiBJMThOX1NUT1JFKE9TUl9ST09UKCksIHNvdXJjZUxhbmd1YWdlKVxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICBzcmM6IFtzcmNdLFxuICAgICAgb3B0aW9uczogY29tcGlsZXJPcHRpb25zXG4gICAgfVxuICAgIGNvbnN0IG9uQ29tcGlsZWQgPSAoc3JjLCBkc3QsIGNvbnRlbnQpID0+IGNvbnRlbnRcbiAgICBjb25zdCBvbkNvbXBpbGVkRG9uZSA9IGFzeW5jIChzcmMsIGRzdCwgb3B0aW9ucywgY29udGVudCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IHBNYXAoTEFOR1VBR0VTLCBhc3luYyAoZHN0TGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0czogSUNvbXBpbGVUYXNrT3B0aW9ucyA9IHtcbiAgICAgICAgICAuLi5kZWZhdWx0T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICAgIG91dHB1dDogcGF0aC5yZXNvbHZlKGAke3Byb2Nlc3MuY3dkKCl9L2NvbnRlbnQvJHtkc3RMYW5ndWFnZX0vYCksXG4gICAgICAgICAgc291cmNlTGFuZ3VhZ2U6IHNvdXJjZUxhbmd1YWdlLFxuICAgICAgICAgIHRhcmdldExhbmd1YWdlOiBkc3RMYW5ndWFnZSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLm9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgICAgaTE4bjogSTE4Tl9TVE9SRShPU1JfUk9PVCgpLCBkc3RMYW5ndWFnZSksXG4gICAgICAgICAgICBzb3VyY2VMYW5ndWFnZTogc291cmNlTGFuZ3VhZ2UsXG4gICAgICAgICAgICB0YXJnZXRMYW5ndWFnZTogZHN0TGFuZ3VhZ2UsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgY3JlYXRlQ29udGVudChzcmMsIG9wdHMpXG4gICAgICAgIHJldHVybiBjb250ZW50XG4gICAgICB9LCB7IGNvbmN1cnJlbmN5OiAxIH0pXG4gICAgfVxuICAgIGNvbmZpZ1tgY29udGVudC0ke3NvdXJjZUxhbmd1YWdlfWBdID0ge1xuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLm9wdGlvbnMsXG4gICAgICAgIG9uQ29tcGlsZWQ6IFRSQU5TTEFURV9DT05URU5UID8gb25Db21waWxlZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgb25Db21waWxlRG9uZTogVFJBTlNMQVRFX0NPTlRFTlQgPyBvbkNvbXBpbGVkRG9uZSA6IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgICBncnVudC5leHRlbmRDb25maWcoeyBjb21waWxlOiBjb25maWcgfSlcbiAgICBncnVudC5yZWdpc3RlclRhc2soYGNvbnRlbnQtJHtzb3VyY2VMYW5ndWFnZX1gLCBgY29tcGlsZTpjb250ZW50LSR7c291cmNlTGFuZ3VhZ2V9YClcbiAgICB3cml0ZVRhc2tDb25maWcoYGNvbXBpbGVfY29udGVudC0ke3NvdXJjZUxhbmd1YWdlfWAsIGNvbmZpZylcbiAgfVxuICBncnVudC5pbml0Q29uZmlnKHtcbiAgICBwa2c6IGdydW50LmZpbGUucmVhZEpTT04oXCJwYWNrYWdlLmpzb25cIiksXG4gICAgY29tcGlsZToge31cbiAgfSlcbiAgY29udGVudFRhc2soSTE4Tl9TT1VSQ0VfTEFOR1VBR0UpXG4gIGdydW50LnJlZ2lzdGVyVGFzaygnY29udGVudCcsIFsnY29tcGlsZTpjb250ZW50LWVuJ10pXG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vICBQcm9kdWN0c1xuICBjb25zdCBwcm9kdWN0X2l0ZW1fdGFza3MgPSBbXVxuICBjb25zdCBwcm9kdWN0VGFza3MgPSAoaXRlbXMpID0+XG4gICAgaXRlbXMuZm9yRWFjaCgoaSkgPT4gcHJvZHVjdEh1Z29UYXNrKGdydW50LCBpLCB7fSwgcHJvZHVjdF9pdGVtX3Rhc2tzKSlcblxuICBjb25zdCBfcHJvZHVjdHMgPSByZWFkUHJvZHVjdHMoZ3J1bnQub3B0aW9uKCdicmFuY2gnKSB8fCBSRVRBSUxfREVGQVVMVF9CUkFOQ0gpXG4gIFRBU0tfQ09NUElMRV9DT05URU5UICYmIHByb2R1Y3RUYXNrcyhfcHJvZHVjdHMpXG4gIFJFR0lTVEVSX1JFVEFJTF9UQVNLUyAmJiByZWdpc3RlclByb2R1Y3RUYXNrcyhncnVudClcbiAgcmVxdWlyZShcIkBwbGFzdGljaHViL29zci10YXNrc1wiKS5pbml0Q29uZmlnKGdydW50LCB7fSlcbn1cbm1vZHVsZS5leHBvcnRzID0gZ3J1bnRcbiJdfQ==