From d8ad6fa5cc5c076eb0523e7ebbaaf2bc748eaf17 Mon Sep 17 00:00:00 2001 From: Kirill Shumilov Date: Tue, 14 Feb 2017 19:08:59 +0300 Subject: [PATCH] feat(xod-cli): add migrating command into xod-cli (`xodc m /path/to/old/bundle.xodball /path/to/save/new/bundle.xodball`) --- packages/xod-cli/package.json | 1 + packages/xod-cli/src/xodc-migrate.js | 33 ++++++++++++++++++++++++++++ packages/xod-cli/src/xodc.js | 2 ++ 3 files changed, 36 insertions(+) create mode 100644 packages/xod-cli/src/xodc-migrate.js diff --git a/packages/xod-cli/package.json b/packages/xod-cli/package.json index 02980cff..7497bb46 100644 --- a/packages/xod-cli/package.json +++ b/packages/xod-cli/package.json @@ -18,6 +18,7 @@ "cli-color": "^1.1.0", "docopt": "^0.6.2", "xod-arduino-builder": "^0.0.1", + "xod-project": "^0.0.1", "xod-doc": "^0.0.1", "xod-fs": "^0.0.1", "xod-js": "^0.0.1" diff --git a/packages/xod-cli/src/xodc-migrate.js b/packages/xod-cli/src/xodc-migrate.js new file mode 100644 index 00000000..5edcfb18 --- /dev/null +++ b/packages/xod-cli/src/xodc-migrate.js @@ -0,0 +1,33 @@ +// migrate|m Migrate old xodball into new version + +import { readJSON, writeJSON } from 'xod-fs'; +import { toV2 } from 'xod-project'; +import * as msg from './messages'; + +const outputToFile = (output, xodball) => { + if (output) { + return writeJSON(output, xodball) + .then(() => { + msg.success(`Successfully migrated and saved to ${output}`); + process.exit(0); + }) + .catch((err) => { + msg.error(err); + process.exit(1); + }); + } + + return xodball; +}; + +export default (input, output) => { + msg.notice(`Migrating ${input} into ${output} ...`); + + readJSON(input) + .then(toV2) + .then(v2 => outputToFile(output, v2)) + .catch((err) => { + msg.error(err); + process.exit(1); + }); +}; diff --git a/packages/xod-cli/src/xodc.js b/packages/xod-cli/src/xodc.js index bcf756b1..ffd04409 100644 --- a/packages/xod-cli/src/xodc.js +++ b/packages/xod-cli/src/xodc.js @@ -6,6 +6,8 @@ import doc from './xodc-doc'; import pack from './xodc-pack'; import transpile from './xodc-transpile'; import unpack from './xodc-unpack'; +import transpile from './xodc-transpile'; +import migrate from './xodc-migrate'; function match(options, programs) { for (const [command, program] of Object.entries(programs)) {