diff --git a/.babelrc b/.babelrc index 86c445f5..24e18ca9 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,3 @@ { - "presets": ["es2015", "react"] + "presets": ["node6"] } diff --git a/bin/xodc b/bin/xodc new file mode 100755 index 00000000..a481d945 --- /dev/null +++ b/bin/xodc @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +require('babel-register'); + +const program = require('commander'); +const fs = require('fs'); +const transpile = require(__dirname + '/../targets/xod-espruino/transpiler').default; + +program + .version('0.0.1') + .arguments(''); + +function main() { + program.parse(process.argv); + + if (program.args.length !== 1) { + program.outputHelp(); + return; + } + + const filename = program.args[0]; + const json = fs.readFileSync(filename); + const project = JSON.parse(json); + const runtime = ''; + const code = transpile({ project, runtime }); + + process.stdout.write(code); +} + +main(); + +// vim:ft=javascript diff --git a/package.json b/package.json index 4c20215e..b95ef815 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,12 @@ "babel-core": "^6.4.0", "babel-loader": "^6.2.1", "babel-preset-es2015": "^6.3.13", + "babel-preset-node6": "^11.0.0", "babel-preset-react": "^6.3.13", + "babel-register": "^6.11.6", "classnames": "^2.2.5", "co": "^4.6.0", + "commander": "^2.9.0", "css-loader": "^0.23.1", "espruino": "git+https://github.com/espruino/EspruinoTools.git#gh-pages", "file-loader": "^0.8.5", diff --git a/targets/xod-espruino/runtime.js b/targets/xod-espruino/runtime.js index 3767b634..e78a13d2 100644 --- a/targets/xod-espruino/runtime.js +++ b/targets/xod-espruino/runtime.js @@ -225,7 +225,3 @@ export class Project { Object.keys(this._nodes).forEach(id => callback(this._nodes[id])); } } - -function onInit() { - console.log(project); -} diff --git a/targets/xod-espruino/transformer.js b/targets/xod-espruino/transformer.js index 82642342..f152a086 100644 --- a/targets/xod-espruino/transformer.js +++ b/targets/xod-espruino/transformer.js @@ -1,7 +1,7 @@ import R from 'ramda'; -import * as PIN_DIRECTION from 'constants/pinDirection'; -import * as PIN_TYPE from 'constants/pinType'; +import * as PIN_DIRECTION from '../../app/constants/pinDirection'; +import * as PIN_TYPE from '../../app/constants/pinType'; /** * Transforms JSON data as it seen it *.xod files to diff --git a/targets/xod-espruino/transpiler.js b/targets/xod-espruino/transpiler.js index a653f767..1d0faa3e 100644 --- a/targets/xod-espruino/transpiler.js +++ b/targets/xod-espruino/transpiler.js @@ -1,15 +1,21 @@ -import runtime from 'raw!./runtime'; import transform from './transformer'; -export default function transpile(project) { - const transformedProject = transform(project); - const payload = `var project = ${JSON.stringify(transformedProject)};`; +export default function transpile({ project, runtime }) { + const nodes = transform(project); + const payload = [ + `var nodes = ${JSON.stringify(nodes)};`, + 'var project = new Project(nodes);', + 'function onInit() {', + ' project.launch();', + '}', + ].join('\n'); const save = 'save();'; return [ - payload, runtime, + payload, save, + '', ].join('\n'); }