Switch to side-by-side view

--- a
+++ b/scripts/qiita-private-launcher
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+
+# -----------------------------------------------------------------------------
+# Copyright (c) 2014--, The Qiita Development Team.
+#
+# Distributed under the terms of the BSD 3-clause License.
+#
+# The full license is in the file LICENSE, distributed with this software.
+# -----------------------------------------------------------------------------
+
+from subprocess import Popen, PIPE
+from os import close, remove
+from tempfile import mkstemp
+
+import click
+
+# When Popen executes, the shell is not in interactive mode,
+# so it is not sourcing any of the bash configuration files
+# We need to source it so the env_script are available
+SCRIPT = """#!/bin/bash
+
+source ~/.bash_profile
+%s
+%s
+"""
+
+
+@click.command()
+@click.argument('qiita_env', required=True, nargs=1)
+@click.argument('command', required=True, nargs=1)
+@click.argument('arguments', required=True, nargs=-1)
+def start(qiita_env, command, arguments):
+    """Starts the plugin environment"""
+    cmd = ['qiita-private', command]
+    cmd.extend(["'%s'" % arg for arg in arguments])
+    fd, fp = mkstemp(suffix=".sh")
+    close(fd)
+    with open(fp, 'w') as f:
+        f.write(SCRIPT % (qiita_env, ' '.join(cmd)))
+    cmd = "bash %s" % fp
+    proc = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
+    stdout, stderr = proc.communicate()
+    remove(fp)
+    if proc.returncode and proc.returncode != 0:
+        raise ValueError(
+            "Error launching internal task:\n\tStdout: %s\n\tStderr: %s"
+            % (stdout, stderr))
+
+
+if __name__ == '__main__':
+    start()