From eefd9d9dd2164c6ff222250934812ac62df9bc15 Mon Sep 17 00:00:00 2001
From: Fabio Berger <me@fabioberger.com>
Date: Mon, 26 Nov 2018 14:59:27 +0000
Subject: Add command-line interface to @0x/migrations

---
 packages/migrations/bin/0x-migrate.js |  2 ++
 packages/migrations/package.json      |  3 +++
 packages/migrations/src/cli.ts        | 38 +++++++++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100755 packages/migrations/bin/0x-migrate.js
 create mode 100644 packages/migrations/src/cli.ts

diff --git a/packages/migrations/bin/0x-migrate.js b/packages/migrations/bin/0x-migrate.js
new file mode 100755
index 000000000..59778c0fc
--- /dev/null
+++ b/packages/migrations/bin/0x-migrate.js
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+require('../lib/cli.js');
diff --git a/packages/migrations/package.json b/packages/migrations/package.json
index c1ce7050d..b006a470a 100644
--- a/packages/migrations/package.json
+++ b/packages/migrations/package.json
@@ -21,6 +21,9 @@
             "assets": []
         }
     },
+    "bin": {
+        "0x-migrate": "bin/0x-migrate.js"
+    },
     "license": "Apache-2.0",
     "devDependencies": {
         "@0x/dev-utils": "^1.0.18",
diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts
new file mode 100644
index 000000000..46a524e85
--- /dev/null
+++ b/packages/migrations/src/cli.ts
@@ -0,0 +1,38 @@
+#!/usr/bin/env node
+import { RPCSubprovider, Web3ProviderEngine } from '@0x/subproviders';
+import { logUtils } from '@0x/utils';
+import * as yargs from 'yargs';
+
+import { runMigrationsAsync } from './migration';
+
+const args = yargs
+    .option('node-endpoint', {
+        describe: 'Endpoint where backing Ethereum node is hosted',
+        type: 'string',
+        demandOption: false,
+        default: 'http://localhost:8545',
+    })
+    .option('from', {
+        describe: 'Ethereum address from which to deploy the contracts',
+        type: 'string',
+        demandOption: true,
+    })
+    .example(
+        '$0 --node-endpoiont http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
+        'Full usage example',
+    ).argv;
+
+(async () => {
+    const rpcSubprovider = new RPCSubprovider(args['node-endpoint']);
+    const provider = new Web3ProviderEngine();
+    provider.addProvider(rpcSubprovider);
+    provider.start();
+    const txDefaults = {
+        from: args.from,
+    };
+    await runMigrationsAsync(provider, txDefaults);
+    process.exit(0);
+})().catch(err => {
+    logUtils.log(err);
+    process.exit(1);
+});
-- 
cgit v1.2.3


From 527f074e598c8ac2e473428e0c192cfbb7a9314d Mon Sep 17 00:00:00 2001
From: Fabio Berger <me@fabioberger.com>
Date: Mon, 26 Nov 2018 15:03:58 +0000
Subject: Fix typo

---
 packages/migrations/src/cli.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts
index 46a524e85..94fbb5fe2 100644
--- a/packages/migrations/src/cli.ts
+++ b/packages/migrations/src/cli.ts
@@ -18,7 +18,7 @@ const args = yargs
         demandOption: true,
     })
     .example(
-        '$0 --node-endpoiont http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
+        '$0 --node-endpoint http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
         'Full usage example',
     ).argv;
 
-- 
cgit v1.2.3


From 9da43878b169226e628ad2ea834e0fab78d5909b Mon Sep 17 00:00:00 2001
From: Fabio Berger <me@fabioberger.com>
Date: Mon, 26 Nov 2018 15:04:27 +0000
Subject: Add CHANGELOG entry to migrations

---
 packages/migrations/CHANGELOG.json | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/packages/migrations/CHANGELOG.json b/packages/migrations/CHANGELOG.json
index dea87b477..78719fc90 100644
--- a/packages/migrations/CHANGELOG.json
+++ b/packages/migrations/CHANGELOG.json
@@ -1,4 +1,13 @@
 [
+    {
+        "version": "2.2.0",
+        "changes": [
+            {
+                "note": "Add CLI `0x-migrate` for running the 0x migrations in a language-agnostic way",
+                "pr": 1324
+            }
+        ]
+    },
     {
         "version": "2.1.0",
         "changes": [
-- 
cgit v1.2.3


From c6592148a725768f652ddfa8f94aa3e2c6f7f213 Mon Sep 17 00:00:00 2001
From: Fabio Berger <me@fabioberger.com>
Date: Mon, 26 Nov 2018 15:57:49 +0000
Subject: Rename node-endpoint to rpc-url for clarity

---
 packages/migrations/src/cli.ts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/packages/migrations/src/cli.ts b/packages/migrations/src/cli.ts
index 94fbb5fe2..2404e7921 100644
--- a/packages/migrations/src/cli.ts
+++ b/packages/migrations/src/cli.ts
@@ -6,8 +6,8 @@ import * as yargs from 'yargs';
 import { runMigrationsAsync } from './migration';
 
 const args = yargs
-    .option('node-endpoint', {
-        describe: 'Endpoint where backing Ethereum node is hosted',
+    .option('rpc-url', {
+        describe: 'Endpoint where backing Ethereum JSON RPC interface is available',
         type: 'string',
         demandOption: false,
         default: 'http://localhost:8545',
@@ -18,12 +18,12 @@ const args = yargs
         demandOption: true,
     })
     .example(
-        '$0 --node-endpoint http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
+        '$0 --rpc-url http://localhost:8545 --from 0x5409ed021d9299bf6814279a6a1411a7e866a631',
         'Full usage example',
     ).argv;
 
 (async () => {
-    const rpcSubprovider = new RPCSubprovider(args['node-endpoint']);
+    const rpcSubprovider = new RPCSubprovider(args['rpc-url']);
     const provider = new Web3ProviderEngine();
     provider.addProvider(rpcSubprovider);
     provider.start();
-- 
cgit v1.2.3