machines/product.js
2023-11-12 21:43:05 +01:00

115 lines
15 KiB
JavaScript

"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=