"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.productGitSyncTask = exports.productBazarTask = exports.productCADTask = exports.productLaserTask = void 0; const path = require("path"); const glob_1 = require("@plastichub/osr-cli-commons/glob"); const copy_1 = require("@plastichub/fs/copy"); const remove_1 = require("@plastichub/fs/remove"); const exists_1 = require("@plastichub/fs/exists"); const library_1 = require("./library"); const _1 = require("./"); const COMPONENT_TEMPLATE = './osr/bazar/root.html'; const debug = true; const verbose = false; let DEFAULT_CAD_OUTPUTS = '${SRC_DIR}/${SRC_NAME}.+(json|html|step|x_t)'; const HTML_DEFAULT_PATH = 'resources/edrawings.html'; const productLaserTask = (grunt, product, options = {}, laser_tasks) => { const config = {}; const slug = path.parse(product).base; config[`component-${slug}`] = { src: [product], options: { clear: true, debug, verbose } }; grunt.extendConfig({ laser: config }); grunt.registerTask(`component-${slug}`, `laser:component-${slug}`); laser_tasks.push(`laser:component-${slug}`); grunt.registerTask(`products-laser`, laser_tasks); }; exports.productLaserTask = productLaserTask; const productCADTask = (grunt, component, options = {}, cad_tasks) => { const config = {}; const slug = path.parse(component).base; component = path.resolve(path.join(process.cwd(), component)); const rel = (0, glob_1.forward_slash)(path.relative(path.resolve('.'), component)); let glob = `${rel}/cad/*Global*.+(SLDASM)`; const filesSolidworks = (0, glob_1.files)(path.resolve('.'), glob); if (!filesSolidworks.length) { return; } config[`component-${slug}`] = { src: [`${component}/cad/*Global*.+(SLDASM)`], output: DEFAULT_CAD_OUTPUTS, options: { debug, verbose, skip: true, onNode: (data => { try { options.debug && _1.logger.info(`Converted ${data.src} to ${data.target}`); const parts = path.parse(data.target); if (parts.ext === '.html' && parts.name.toLowerCase().indexOf('global') !== -1) { const target = path.join(component, HTML_DEFAULT_PATH); if ((0, exists_1.sync)(target)) { (0, remove_1.sync)(target); } (0, copy_1.sync)(data.target, target, {}); } } catch (error) { _1.logger.info(`Error copying ${data.src} to ${HTML_DEFAULT_PATH}`, error); } }) } }; grunt.extendConfig({ cad: config }); grunt.registerTask(`component-${slug}`, `cad:component-${slug}`); cad_tasks.push(`cad:component-${slug}`); grunt.registerTask(`components-cad`, cad_tasks); }; exports.productCADTask = productCADTask; const productBazarTask = (grunt, component, options = {}, cscart_tasks) => { if (!component) { _1.logger.error('Invalid component'); } const config = {}; const slug = path.parse(component).base; config[`component-${slug}`] = { src: [COMPONENT_TEMPLATE], options: (0, library_1.componentContentOptions)(component) }; grunt.extendConfig({ compile: config }); grunt.registerTask(`component-${slug}`, `compile:component-${slug}`); cscart_tasks.push(`compile:component-${slug}`); grunt.registerTask(`products-bazar`, cscart_tasks); }; exports.productBazarTask = productBazarTask; const productGitSyncTask = (grunt, component, options = {}, git_tasks) => { const config = {}; const opts = { clean: true, debug, verbose, cwd: '${OSR_ROOT}/osr-machines/', rel: component.replace('products/', '') }; const slug = path.parse(component).base; config[`component-${slug}`] = opts; grunt.extendConfig({ git: config }); grunt.registerTask(`git-component-${slug}`, `git:component-${slug}`); git_tasks.push(`git:component-${slug}`); grunt.registerTask(`components-git`, git_tasks); }; exports.productGitSyncTask = productGitSyncTask; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFza3MvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE0QjtBQUc1QiwyREFBdUU7QUFFdkUsOENBQWdEO0FBQ2hELGtEQUFrRDtBQUNsRCxrREFBc0Q7QUFFdEQsdUNBRWtCO0FBR2xCLHlCQUEyQjtBQUUzQixNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFBO0FBRWxELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQTtBQUNsQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUE7QUFFckIsSUFBSSxtQkFBbUIsR0FBRyw4Q0FBOEMsQ0FBQTtBQUN4RSxNQUFNLGlCQUFpQixHQUFHLDBCQUEwQixDQUFBO0FBRTdDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQWUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFO0lBQy9FLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUVyQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxHQUFHO1FBQzFCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUNMLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSztZQUNMLE9BQU87U0FDVjtLQUNKLENBQUE7SUFDRCxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ2YsS0FBSyxFQUFFLE1BQU07S0FDaEIsQ0FBQyxDQUFBO0lBQ0YsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLElBQUksRUFBRSxFQUFFLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxFLFdBQVcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUE7SUFFM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxnQkFB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LElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUV2QyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQTtJQUVsQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ2YsR0FBRyxFQUFFLE1BQU07S0FDZCxDQUFDLENBQUE7SUFFRixLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVwRSxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXZDLEtBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFFbkQsQ0FBQyxDQUFBO0FBMUJZLFFBQUEsa0JBQWtCLHNCQTBCOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXHJcblxyXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnQHBsYXN0aWNodWIvb3NyLWNsaS1jb21tb25zL2ZzJ1xyXG5pbXBvcnQgeyBmaWxlcywgZm9yd2FyZF9zbGFzaCB9IGZyb20gJ0BwbGFzdGljaHViL29zci1jbGktY29tbW9ucy9nbG9iJ1xyXG5cclxuaW1wb3J0IHsgc3luYyBhcyBjcCB9IGZyb20gJ0BwbGFzdGljaHViL2ZzL2NvcHknXHJcbmltcG9ydCB7IHN5bmMgYXMgcm0gfSBmcm9tICdAcGxhc3RpY2h1Yi9mcy9yZW1vdmUnXHJcbmltcG9ydCB7IHN5bmMgYXMgZXhpc3RzIH0gZnJvbSAnQHBsYXN0aWNodWIvZnMvZXhpc3RzJ1xyXG5cclxuaW1wb3J0IHtcclxuICAgIGNvbXBvbmVudENvbnRlbnRPcHRpb25zIGFzIGNvbXBvbmVudENvbnRlbnRPcHRpb25zXHJcbn0gZnJvbSAnLi9saWJyYXJ5J1xyXG5cclxuXHJcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vJ1xyXG5cclxuY29uc3QgQ09NUE9ORU5UX1RFTVBMQVRFID0gJy4vb3NyL2JhemFyL3Jvb3QuaHRtbCdcclxuXHJcbmNvbnN0IGRlYnVnID0gdHJ1ZVxyXG5jb25zdCB2ZXJib3NlID0gZmFsc2VcclxuXHJcbmxldCBERUZBVUxUX0NBRF9PVVRQVVRTID0gJyR7U1JDX0RJUn0vJHtTUkNfTkFNRX0uKyhqc29ufGh0bWx8c3RlcHx4X3QpJ1xyXG5jb25zdCBIVE1MX0RFRkFVTFRfUEFUSCA9ICdyZXNvdXJjZXMvZWRyYXdpbmdzLmh0bWwnXHJcblxyXG5leHBvcnQgY29uc3QgcHJvZHVjdExhc2VyVGFzayA9IChncnVudCwgcHJvZHVjdCwgb3B0aW9uczogYW55ID0ge30sIGxhc2VyX3Rhc2tzKSA9PiB7XHJcbiAgICBjb25zdCBjb25maWcgPSB7fVxyXG4gICAgY29uc3Qgc2x1ZyA9IHBhdGgucGFyc2UocHJvZHVjdCkuYmFzZVxyXG5cclxuICAgIGNvbmZpZ1tgY29tcG9uZW50LSR7c2x1Z31gXSA9IHtcclxuICAgICAgICBzcmM6IFtwcm9kdWN0XSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgIGNsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICBkZWJ1ZyxcclxuICAgICAgICAgICAgdmVyYm9zZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdydW50LmV4dGVuZENvbmZpZyh7XHJcbiAgICAgICAgbGFzZXI6IGNvbmZpZ1xyXG4gICAgfSlcclxuICAgIGdydW50LnJlZ2lzdGVyVGFzayhgY29tcG9uZW50LSR7c2x1Z31gLCBgbGFzZXI6Y29tcG9uZW50LSR7c2x1Z31gKVxyXG5cclxuICAgIGxhc2VyX3Rhc2tzLnB1c2goYGxhc2VyOmNvbXBvbmVudC0ke3NsdWd9YClcclxuXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYHByb2R1Y3RzLWxhc2VyYCwgbGFzZXJfdGFza3MpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBwcm9kdWN0Q0FEVGFzayA9IChncnVudCwgY29tcG9uZW50LCBvcHRpb25zOiBhbnkgPSB7fSwgY2FkX3Rhc2tzKSA9PiB7XHJcbiAgICBjb25zdCBjb25maWcgPSB7fVxyXG4gICAgY29uc3Qgc2x1ZyA9IHBhdGgucGFyc2UoY29tcG9uZW50KS5iYXNlXHJcblxyXG4gICAgY29tcG9uZW50ID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBjb21wb25lbnQpKVxyXG5cclxuICAgIGNvbnN0IHJlbCA9IGZvcndhcmRfc2xhc2gocGF0aC5yZWxhdGl2ZShwYXRoLnJlc29sdmUoJy4nKSwgY29tcG9uZW50KSlcclxuICAgIGxldCBnbG9iID0gYCR7cmVsfS9jYWQvKkdsb2JhbCouKyhTTERBU00pYFxyXG4gICAgY29uc3QgZmlsZXNTb2xpZHdvcmtzID0gZmlsZXMocGF0aC5yZXNvbHZlKCcuJyksIGdsb2IpXHJcbiAgICBpZiAoIWZpbGVzU29saWR3b3Jrcy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uZmlnW2Bjb21wb25lbnQtJHtzbHVnfWBdID0ge1xyXG4gICAgICAgIHNyYzogW2Ake2NvbXBvbmVudH0vY2FkLypHbG9iYWwqLisoU0xEQVNNKWBdLFxyXG4gICAgICAgIG91dHB1dDogREVGQVVMVF9DQURfT1VUUFVUUyxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgIGRlYnVnLFxyXG4gICAgICAgICAgICB2ZXJib3NlLFxyXG4gICAgICAgICAgICBza2lwOnRydWUsXHJcbiAgICAgICAgICAgIG9uTm9kZTogKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRlYnVnICYmIGxvZ2dlci5pbmZvKGBDb252ZXJ0ZWQgJHtkYXRhLnNyY30gdG8gJHtkYXRhLnRhcmdldH1gKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5wYXJzZShkYXRhLnRhcmdldClcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMuZXh0ID09PSAnLmh0bWwnICYmIHBhcnRzLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdnbG9iYWwnKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gcGF0aC5qb2luKGNvbXBvbmVudCwgSFRNTF9ERUZBVUxUX1BBVEgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGV4aXN0cyh0YXJnZXQpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJtKHRhcmdldClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjcChkYXRhLnRhcmdldCwgdGFyZ2V0LCB7fSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBFcnJvciBjb3B5aW5nICR7ZGF0YS5zcmN9IHRvICR7SFRNTF9ERUZBVUxUX1BBVEh9YCwgZXJyb3IpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ3J1bnQuZXh0ZW5kQ29uZmlnKHtcclxuICAgICAgICBjYWQ6IGNvbmZpZ1xyXG4gICAgfSlcclxuICAgIGdydW50LnJlZ2lzdGVyVGFzayhgY29tcG9uZW50LSR7c2x1Z31gLCBgY2FkOmNvbXBvbmVudC0ke3NsdWd9YClcclxuXHJcbiAgICBjYWRfdGFza3MucHVzaChgY2FkOmNvbXBvbmVudC0ke3NsdWd9YClcclxuXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYGNvbXBvbmVudHMtY2FkYCwgY2FkX3Rhc2tzKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcHJvZHVjdEJhemFyVGFzayA9IChncnVudCwgY29tcG9uZW50LCBvcHRpb25zOiBhbnkgPSB7fSwgY3NjYXJ0X3Rhc2tzKSA9PiB7XHJcbiAgICBpZiAoIWNvbXBvbmVudCkge1xyXG4gICAgICAgIGxvZ2dlci5lcnJvcignSW52YWxpZCBjb21wb25lbnQnKVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnID0ge31cclxuICAgIGNvbnN0IHNsdWcgPSBwYXRoLnBhcnNlKGNvbXBvbmVudCkuYmFzZVxyXG4gICAgY29uZmlnW2Bjb21wb25lbnQtJHtzbHVnfWBdID0ge1xyXG4gICAgICAgIHNyYzogW0NPTVBPTkVOVF9URU1QTEFURV0sXHJcbiAgICAgICAgb3B0aW9uczogY29tcG9uZW50Q29udGVudE9wdGlvbnMoY29tcG9uZW50KVxyXG4gICAgfVxyXG4gICAgZ3J1bnQuZXh0ZW5kQ29uZmlnKHtcclxuICAgICAgICBjb21waWxlOiBjb25maWdcclxuICAgIH0pXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYGNvbXBvbmVudC0ke3NsdWd9YCwgYGNvbXBpbGU6Y29tcG9uZW50LSR7c2x1Z31gKVxyXG5cclxuICAgIGNzY2FydF90YXNrcy5wdXNoKGBjb21waWxlOmNvbXBvbmVudC0ke3NsdWd9YClcclxuXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYHByb2R1Y3RzLWJhemFyYCwgY3NjYXJ0X3Rhc2tzKVxyXG59XHJcbmV4cG9ydCBjb25zdCBwcm9kdWN0R2l0U3luY1Rhc2sgPSAoZ3J1bnQsIGNvbXBvbmVudCwgb3B0aW9uczogYW55ID0ge30sIGdpdF90YXNrcykgPT4ge1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IHt9XHJcblxyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICBjbGVhbjogdHJ1ZSxcclxuICAgICAgICBkZWJ1ZyxcclxuICAgICAgICB2ZXJib3NlLFxyXG4gICAgICAgIGN3ZDogJyR7T1NSX1JPT1R9L29zci1tYWNoaW5lcy8nLFxyXG4gICAgICAgIHJlbDogY29tcG9uZW50LnJlcGxhY2UoJ3Byb2R1Y3RzLycsICcnKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNsdWcgPSBwYXRoLnBhcnNlKGNvbXBvbmVudCkuYmFzZVxyXG5cclxuICAgIGNvbmZpZ1tgY29tcG9uZW50LSR7c2x1Z31gXSA9IG9wdHNcclxuXHJcbiAgICBncnVudC5leHRlbmRDb25maWcoe1xyXG4gICAgICAgIGdpdDogY29uZmlnXHJcbiAgICB9KVxyXG5cclxuICAgIGdydW50LnJlZ2lzdGVyVGFzayhgZ2l0LWNvbXBvbmVudC0ke3NsdWd9YCwgYGdpdDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgZ2l0X3Rhc2tzLnB1c2goYGdpdDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgZ3J1bnQucmVnaXN0ZXJUYXNrKGBjb21wb25lbnRzLWdpdGAsIGdpdF90YXNrcylcclxuXHJcbn0iXX0=