feat(runtime): add xodc script

This commit is contained in:
Victor Nakoryakov
2016-08-05 14:44:25 +03:00
parent 0070628867
commit b398afa8f7
6 changed files with 49 additions and 12 deletions

View File

@@ -1,3 +1,3 @@
{
"presets": ["es2015", "react"]
"presets": ["node6"]
}

32
bin/xodc Executable file
View File

@@ -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('<PATCH_FILE>');
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

View File

@@ -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",

View File

@@ -225,7 +225,3 @@ export class Project {
Object.keys(this._nodes).forEach(id => callback(this._nodes[id]));
}
}
function onInit() {
console.log(project);
}

View File

@@ -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

View File

@@ -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');
}