From c4b20c914671c5e641c12141d90733e7a809c1e8 Mon Sep 17 00:00:00 2001
From: Lloyd Hilaiel <lloyd@hilaiel.com>
Date: Fri, 1 Jun 2012 13:34:21 +0300
Subject: [PATCH] new deploy script that's a lil' wrapper around awsbox,
 extracts stuff from env and passes it to awsbox

---
 foo               |  0
 scripts/deploy.js | 82 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+)
 delete mode 100644 foo
 create mode 100755 scripts/deploy.js

diff --git a/foo b/foo
deleted file mode 100644
index e69de29bb..000000000
diff --git a/scripts/deploy.js b/scripts/deploy.js
new file mode 100755
index 000000000..4ee22b422
--- /dev/null
+++ b/scripts/deploy.js
@@ -0,0 +1,82 @@
+#!/usr/bin/env node
+
+var path = require('path'),
+child_process = require('child_process');
+
+/*
+ * A thin wrapper around awsbox that expects certain env
+ * vars and invokes awsbox for ya to deploy a VM. 
+ */
+
+if (!process.env['AWS_ID'] || ! process.env['AWS_SECRET']) {
+  console.log("You haven't defined AWS_ID and AWS_SECRET in the environment");
+  console.log("Get these values from the amazon web console and try again.");
+  process.exit(1);
+}
+
+if (!process.env['ZERIGO_DNS_KEY'] && process.env['PERSONA_DEPLOY_DNS_KEY']) { 
+  process.env['ZERIGO_DNS_KEY'] = process.env['PERSONA_DEPLOY_DNS_KEY'];
+}
+
+var cmd = path.join(__dirname, '..', 'node_modules', '.bin', 'awsbox');
+cmd = path.relative(process.env['PWD'], cmd);
+
+if (process.argv.length > 1 &&
+    process.argv[2] === 'create' || 
+    process.argv[2] === 'deploy')
+{
+  var options = {};
+
+  if (process.argv.length > 3) options.n = process.argv[3];
+
+  if (process.env['PERSONA_SSL_PRIV'] || process.env['PERSONA_SSL_PUB']) {
+    options.p = process.env['PERSONA_SSL_PUB'];
+    options.s = process.env['PERSONA_SSL_PRIV'];
+  }
+
+  if (process.env['ZERIGO_DNS_KEY']) {
+    options.d = true;
+
+    // when we have a DNS key, we can set a hostname!
+    var scheme = (options.p ? 'https' : 'http') + '://';
+
+    if (process.env['PERSONA_DEPLOYMENT_HOSTNAME']) {
+      options.u = scheme + process.env['PERSONA_DEPLOYMENT_HOSTNAME'];
+    } else if (options.n) {
+      options.u = scheme + options.n + ".personatest.org";
+    }
+
+  } else {
+    console.log('WARNING: No DNS key defined in the environment!  ' +
+                'I cannot set up DNS for you.  We\'ll do this by IP.');
+  }
+
+  // pass through/override with user provided vars
+  for (var i = 3; i < process.argv.length; i++) {
+    var k = process.argv[i];
+    if (i + 1 < process.argv.length && k.length === 2 && k[0] === '-') {
+      options[k[1]] = process.argv[++i];
+    }
+  }
+
+  if (process.env['PERSONA_EPHEMERAL_CONFIG']) {
+    options.x = process.env['PERSONA_EPHEMERAL_CONFIG'];
+  }
+
+  cmd += " create";
+
+  Object.keys(options).forEach(function(opt) {
+    cmd += " -" + opt;
+    cmd += typeof options[opt] === 'string' ? " " + options[opt] : "";
+  });
+} else {
+  cmd += " " + process.argv.slice(2).join(' ');
+}
+
+console.log("awsbox cmd: " + cmd);
+var cp = child_process.exec(cmd, function(err) {
+  if (err) process.exit(err.code);
+  else process.exit(0);
+});
+cp.stdout.pipe(process.stdout);
+cp.stderr.pipe(process.stderr);
-- 
GitLab