import * as path from 'path' import { resolve } from '@plastichub/osr-cli-commons/fs' import { files, forward_slash } from '@plastichub/osr-cli-commons/glob' import { sync as cp } from '@plastichub/fs/copy' import { sync as rm } from '@plastichub/fs/remove' import { sync as exists } from '@plastichub/fs/exists' import { componentContentOptions as componentContentOptions } from './library' import { logger } from './' 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' export const productLaserTask = (grunt, product, options: any = {}, 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) } export const productCADTask = (grunt, component, options: any = {}, cad_tasks) => { const config = {} const slug = path.parse(component).base component = path.resolve(path.join(process.cwd(), component)) const rel = forward_slash(path.relative(path.resolve('.'), component)) let glob = `${rel}/cad/*Global*.+(SLDASM)` const filesSolidworks = 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 && 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(exists(target)){ rm(target) } cp(data.target, target, {}) } } catch (error) { 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) } export const productBazarTask = (grunt, component, options: any = {}, cscart_tasks) => { if (!component) { logger.error('Invalid component') } const config = {} const slug = path.parse(component).base config[`component-${slug}`] = { src: [COMPONENT_TEMPLATE], options: 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) } export const productGitSyncTask = (grunt, component, options: any = {}, 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) }