make more use of the .env file on diverse systems
authorBryan <btbonval@gmail.com>
Wed, 11 Mar 2015 04:38:23 +0000 (00:38 -0400)
committerBryan <btbonval@gmail.com>
Wed, 11 Mar 2015 04:38:23 +0000 (00:38 -0400)
export_env_to_heroku.py
run_with_env.py [new file with mode: 0644]

index 6e652bc7d5c2f515156220f7b3d5f25ce000d692..5048e6362c790e55d97a78dc69fd25971d4a4ddf 100644 (file)
@@ -1,3 +1,4 @@
+# export a foreman env to heroku
 import subprocess
 
 def export_env(filename='.env'):
diff --git a/run_with_env.py b/run_with_env.py
new file mode 100644 (file)
index 0000000..0689ed6
--- /dev/null
@@ -0,0 +1,30 @@
+# a duct-tape-and-bubble-gum version of foreman's env support
+import os
+import subprocess
+
+def run_in_env(command, filename='.env'):
+    # configure environment as a copy of the current environment
+    env = {}
+    env.update(os.environ)
+    # plus vars from the file
+    with open(filename, 'r') as config:
+        for line in config.readlines():
+            # ignore whitespace padding
+            line.strip()
+            tmp = line.split('=')
+            # further ignore whitespace padding that was around the =
+            tmp = map(str.strip, tmp)
+            if len(tmp[0]) and tmp[0][0] == '#':
+                pass
+            # check for nonempty variable and content
+            elif len(tmp) == 2 and len(tmp[0]) and len(tmp[1]):
+                env[tmp[0]] = tmp[1].strip("'") # drop quotes around values
+    # run command
+    subprocess.check_call(command, env=env)
+    # check_call fires an exception on failure.
+    # if we're here, both calls succeeded.
+    return 0
+
+if __name__ == '__main__':
+    import sys
+    sys.exit(run_in_env(sys.argv[1:], '.env'))