ergogen/src/cli.js

61 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-06-26 21:00:10 +02:00
#!/usr/bin/env node
const m = require('makerjs')
2020-06-07 13:40:26 +02:00
const fs = require('fs-extra')
const path = require('path')
const yaml = require('js-yaml')
2020-05-28 22:18:41 +02:00
const yargs = require('yargs')
2020-06-07 13:40:26 +02:00
2020-06-26 21:00:10 +02:00
const u = require('./utils')
const points_lib = require('./points')
2020-06-16 22:24:46 +02:00
const outline_lib = require('./outline')
2020-05-30 15:17:53 +02:00
2020-06-26 21:00:10 +02:00
const dump_model = (model, file='model') => {
const assembly = m.model.originate({
models: u.deepcopy(model),
units: 'mm'
})
fs.mkdirpSync(path.dirname(`${file}.dxf`))
fs.writeFileSync(`${file}.dxf`, m.exporter.toDXF(assembly))
if (args.debug) {
fs.writeJSONSync(`${file}.json`, assembly, {spaces: 4})
}
}
2020-05-28 22:18:41 +02:00
const args = yargs
2020-06-07 13:40:26 +02:00
.option('config', {
alias: 'c',
demandOption: true,
describe: 'Config yaml file',
type: 'string'
})
.option('output', {
alias: 'o',
default: path.resolve('output'),
describe: 'Output folder',
type: 'string'
})
2020-05-30 15:17:53 +02:00
.option('debug', {
2020-05-28 22:18:41 +02:00
default: false,
2020-05-30 15:17:53 +02:00
hidden: true,
type: 'boolean'
})
2020-06-07 13:40:26 +02:00
.argv
2020-06-26 21:00:10 +02:00
fs.mkdirpSync(args.o)
2020-05-28 22:18:41 +02:00
2020-06-26 21:00:10 +02:00
const config_parser = args.c.endsWith('.yaml') ? yaml.load : JSON.parse
const config = config_parser(fs.readFileSync(args.c).toString())
2020-05-30 15:17:53 +02:00
2020-06-26 21:00:10 +02:00
const points = points_lib.parse(config.points)
2020-05-30 15:17:53 +02:00
if (args.debug) {
2020-06-26 21:00:10 +02:00
fs.writeJSONSync(path.join(args.o, 'points.json'), points, {spaces: 4})
const size = 14
const rect = u.rect(size, size, [-size/2, -size/2])
const points_demo = outline_lib.layout(points, rect)
dump_model(points_demo, path.join(args.o, 'points_demo'))
2020-05-31 22:59:51 +02:00
}
2020-06-07 13:40:26 +02:00
2020-06-16 22:24:46 +02:00
console.log('Done.')