"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 PRODUCT_TEMPLATE = './osr/bazar/root.html'; const debug = true; const verbose = true; 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 = {}, product_laser_tasks) => { const config = {}; const slug = path.parse(product).base; config[`product-${slug}`] = { src: [product], options: { clear: true, debug, verbose } }; grunt.extendConfig({ laser: config }); grunt.registerTask(`product-${slug}`, `laser:product-${slug}`); product_laser_tasks.push(`laser:product-${slug}`); grunt.registerTask(`products-laser`, product_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, library_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) { const t = 0; } 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, product, options = {}, product_bazar_tasks) => { if (!product) { _1.logger.error('Invalid product'); } const config = {}; const slug = path.parse(product).base; config[`product-${slug}`] = { src: [PRODUCT_TEMPLATE], options: (0, library_1.productContentOptions)(product) }; grunt.extendConfig({ compile: config }); grunt.registerTask(`product-${slug}`, `compile:product-${slug}`); product_bazar_tasks.push(`compile:product-${slug}`); grunt.registerTask(`products-bazar`, product_bazar_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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRhc2tzL3Byb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTRCO0FBRzVCLDJEQUFrRTtBQUVsRSw4Q0FBZ0Q7QUFDaEQsa0RBQWtEO0FBQ2xELGtEQUFzRDtBQUV0RCx1Q0FHa0I7QUFHbEIseUJBQTJCO0FBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUE7QUFFaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFBO0FBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQTtBQUVwQixJQUFJLG1CQUFtQixHQUFHLDhDQUE4QyxDQUFBO0FBQ3hFLE1BQU0saUJBQWlCLEdBQUcsMEJBQTBCLENBQUE7QUFFN0MsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBZSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsRUFBRTtJQUN2RixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7SUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFckMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRztRQUN4QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDZCxPQUFPLEVBQUU7WUFDTCxLQUFLLEVBQUUsSUFBSTtZQUNYLEtBQUs7WUFDTCxPQUFPO1NBQ1Y7S0FDSixDQUFBO0lBQ0QsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNmLEtBQUssRUFBRSxNQUFNO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUU5RCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUE7SUFFakQsS0FBSyxDQUFDLFlBQVksQ0FBQyxnQkFB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QUUsQ0FBQztLQUMxQyxDQUFBO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFdkMsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUE7SUFFbEMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNmLEdBQUcsRUFBRSxNQUFNO0tBQ2QsQ0FBQyxDQUFBO0lBRUYsS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUE7SUFFcEUsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUV2QyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFBO0FBRW5ELENBQUMsQ0FBQTtBQTFCWSxRQUFBLGtCQUFrQixzQkEwQjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJ1xyXG5cclxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ0BwbGFzdGljaHViL29zci1jbGktY29tbW9ucy9mcydcclxuaW1wb3J0IHsgZmlsZXMsIHBhdGhJbmZvIH0gZnJvbSAnQHBsYXN0aWNodWIvb3NyLWNsaS1jb21tb25zL2dsb2InXHJcblxyXG5pbXBvcnQgeyBzeW5jIGFzIGNwIH0gZnJvbSAnQHBsYXN0aWNodWIvZnMvY29weSdcclxuaW1wb3J0IHsgc3luYyBhcyBybSB9IGZyb20gJ0BwbGFzdGljaHViL2ZzL3JlbW92ZSdcclxuaW1wb3J0IHsgc3luYyBhcyBleGlzdHMgfSBmcm9tICdAcGxhc3RpY2h1Yi9mcy9leGlzdHMnXHJcblxyXG5pbXBvcnQge1xyXG4gICAgcHJvZHVjdENvbnRlbnRPcHRpb25zLFxyXG4gICAgZm9yd2FyZF9zbGFzaFxyXG59IGZyb20gJy4vbGlicmFyeSdcclxuXHJcblxyXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLydcclxuXHJcbmNvbnN0IFBST0RVQ1RfVEVNUExBVEUgPSAnLi9vc3IvYmF6YXIvcm9vdC5odG1sJ1xyXG5cclxuY29uc3QgZGVidWcgPSB0cnVlXHJcbmNvbnN0IHZlcmJvc2UgPSB0cnVlXHJcblxyXG5sZXQgREVGQVVMVF9DQURfT1VUUFVUUyA9ICcke1NSQ19ESVJ9LyR7U1JDX05BTUV9LisoanNvbnxodG1sfHN0ZXB8eF90KSdcclxuY29uc3QgSFRNTF9ERUZBVUxUX1BBVEggPSAncmVzb3VyY2VzL2VkcmF3aW5ncy5odG1sJ1xyXG5cclxuZXhwb3J0IGNvbnN0IHByb2R1Y3RMYXNlclRhc2sgPSAoZ3J1bnQsIHByb2R1Y3QsIG9wdGlvbnM6IGFueSA9IHt9LCBwcm9kdWN0X2xhc2VyX3Rhc2tzKSA9PiB7XHJcbiAgICBjb25zdCBjb25maWcgPSB7fVxyXG4gICAgY29uc3Qgc2x1ZyA9IHBhdGgucGFyc2UocHJvZHVjdCkuYmFzZVxyXG5cclxuICAgIGNvbmZpZ1tgcHJvZHVjdC0ke3NsdWd9YF0gPSB7XHJcbiAgICAgICAgc3JjOiBbcHJvZHVjdF0sXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICBjbGVhcjogdHJ1ZSxcclxuICAgICAgICAgICAgZGVidWcsXHJcbiAgICAgICAgICAgIHZlcmJvc2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBncnVudC5leHRlbmRDb25maWcoe1xyXG4gICAgICAgIGxhc2VyOiBjb25maWdcclxuICAgIH0pXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYHByb2R1Y3QtJHtzbHVnfWAsIGBsYXNlcjpwcm9kdWN0LSR7c2x1Z31gKVxyXG5cclxuICAgIHByb2R1Y3RfbGFzZXJfdGFza3MucHVzaChgbGFzZXI6cHJvZHVjdC0ke3NsdWd9YClcclxuXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYHByb2R1Y3RzLWxhc2VyYCwgcHJvZHVjdF9sYXNlcl90YXNrcylcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHByb2R1Y3RDQURUYXNrID0gKGdydW50LCBjb21wb25lbnQsIG9wdGlvbnM6IGFueSA9IHt9LCBjYWRfdGFza3MpID0+IHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHt9XHJcbiAgICBjb25zdCBzbHVnID0gcGF0aC5wYXJzZShjb21wb25lbnQpLmJhc2VcclxuXHJcbiAgICBjb21wb25lbnQgPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGNvbXBvbmVudCkpXHJcblxyXG4gICAgY29uc3QgcmVsID0gZm9yd2FyZF9zbGFzaChwYXRoLnJlbGF0aXZlKHBhdGgucmVzb2x2ZSgnLicpLCBjb21wb25lbnQpKVxyXG4gICAgbGV0IGdsb2IgPSBgJHtyZWx9L2NhZC8qR2xvYmFsKi4rKFNMREFTTSlgXHJcbiAgICBjb25zdCBmaWxlc1NvbGlkd29ya3MgPSBmaWxlcyhwYXRoLnJlc29sdmUoJy4nKSwgZ2xvYilcclxuICAgIGlmICghZmlsZXNTb2xpZHdvcmtzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHQgPSAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbmZpZ1tgY29tcG9uZW50LSR7c2x1Z31gXSA9IHtcclxuICAgICAgICBzcmM6IFtgJHtjb21wb25lbnR9L2NhZC8qR2xvYmFsKi4rKFNMREFTTSlgXSxcclxuICAgICAgICBvdXRwdXQ6IERFRkFVTFRfQ0FEX09VVFBVVFMsXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICBkZWJ1ZyxcclxuICAgICAgICAgICAgdmVyYm9zZSxcclxuICAgICAgICAgICAgc2tpcDp0cnVlLFxyXG4gICAgICAgICAgICBvbk5vZGU6IChkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kZWJ1ZyAmJiBsb2dnZXIuaW5mbyhgQ29udmVydGVkICR7ZGF0YS5zcmN9IHRvICR7ZGF0YS50YXJnZXR9YClcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHBhdGgucGFyc2UoZGF0YS50YXJnZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRzLmV4dCA9PT0gJy5odG1sJyAmJiBwYXJ0cy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZ2xvYmFsJykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHBhdGguam9pbihjb21wb25lbnQsIEhUTUxfREVGQVVMVF9QQVRIKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihleGlzdHModGFyZ2V0KSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBybSh0YXJnZXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY3AoZGF0YS50YXJnZXQsIHRhcmdldCwge30pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgRXJyb3IgY29weWluZyAke2RhdGEuc3JjfSB0byAke0hUTUxfREVGQVVMVF9QQVRIfWAsIGVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdydW50LmV4dGVuZENvbmZpZyh7XHJcbiAgICAgICAgY2FkOiBjb25maWdcclxuICAgIH0pXHJcbiAgICBncnVudC5yZWdpc3RlclRhc2soYGNvbXBvbmVudC0ke3NsdWd9YCwgYGNhZDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgY2FkX3Rhc2tzLnB1c2goYGNhZDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgZ3J1bnQucmVnaXN0ZXJUYXNrKGBjb21wb25lbnRzLWNhZGAsIGNhZF90YXNrcylcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHByb2R1Y3RCYXphclRhc2sgPSAoZ3J1bnQsIHByb2R1Y3QsIG9wdGlvbnM6IGFueSA9IHt9LCBwcm9kdWN0X2JhemFyX3Rhc2tzKSA9PiB7XHJcbiAgICBpZiAoIXByb2R1Y3QpIHtcclxuICAgICAgICBsb2dnZXIuZXJyb3IoJ0ludmFsaWQgcHJvZHVjdCcpXHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWcgPSB7fVxyXG4gICAgY29uc3Qgc2x1ZyA9IHBhdGgucGFyc2UocHJvZHVjdCkuYmFzZVxyXG4gICAgY29uZmlnW2Bwcm9kdWN0LSR7c2x1Z31gXSA9IHtcclxuICAgICAgICBzcmM6IFtQUk9EVUNUX1RFTVBMQVRFXSxcclxuICAgICAgICBvcHRpb25zOiBwcm9kdWN0Q29udGVudE9wdGlvbnMocHJvZHVjdClcclxuICAgIH1cclxuICAgIGdydW50LmV4dGVuZENvbmZpZyh7XHJcbiAgICAgICAgY29tcGlsZTogY29uZmlnXHJcbiAgICB9KVxyXG4gICAgZ3J1bnQucmVnaXN0ZXJUYXNrKGBwcm9kdWN0LSR7c2x1Z31gLCBgY29tcGlsZTpwcm9kdWN0LSR7c2x1Z31gKVxyXG5cclxuICAgIHByb2R1Y3RfYmF6YXJfdGFza3MucHVzaChgY29tcGlsZTpwcm9kdWN0LSR7c2x1Z31gKVxyXG5cclxuICAgIGdydW50LnJlZ2lzdGVyVGFzayhgcHJvZHVjdHMtYmF6YXJgLCBwcm9kdWN0X2JhemFyX3Rhc2tzKVxyXG59XHJcbmV4cG9ydCBjb25zdCBwcm9kdWN0R2l0U3luY1Rhc2sgPSAoZ3J1bnQsIGNvbXBvbmVudCwgb3B0aW9uczogYW55ID0ge30sIGdpdF90YXNrcykgPT4ge1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IHt9XHJcblxyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICBjbGVhbjogdHJ1ZSxcclxuICAgICAgICBkZWJ1ZyxcclxuICAgICAgICB2ZXJib3NlLFxyXG4gICAgICAgIGN3ZDogJyR7T1NSX1JPT1R9L29zci1tYWNoaW5lcy8nLFxyXG4gICAgICAgIHJlbDogY29tcG9uZW50LnJlcGxhY2UoJ3Byb2R1Y3RzLycsICcnKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNsdWcgPSBwYXRoLnBhcnNlKGNvbXBvbmVudCkuYmFzZVxyXG5cclxuICAgIGNvbmZpZ1tgY29tcG9uZW50LSR7c2x1Z31gXSA9IG9wdHNcclxuXHJcbiAgICBncnVudC5leHRlbmRDb25maWcoe1xyXG4gICAgICAgIGdpdDogY29uZmlnXHJcbiAgICB9KVxyXG5cclxuICAgIGdydW50LnJlZ2lzdGVyVGFzayhgZ2l0LWNvbXBvbmVudC0ke3NsdWd9YCwgYGdpdDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgZ2l0X3Rhc2tzLnB1c2goYGdpdDpjb21wb25lbnQtJHtzbHVnfWApXHJcblxyXG4gICAgZ3J1bnQucmVnaXN0ZXJUYXNrKGBjb21wb25lbnRzLWdpdGAsIGdpdF90YXNrcylcclxuXHJcbn0iXX0=