Browse Source

make more use of the .env file on diverse systems

Bryan 9 years ago
parent
commit
a4dae2dfbe
2 changed files with 31 additions and 0 deletions
  1. 1 0
      export_env_to_heroku.py
  2. 30 0
      run_with_env.py

+ 1 - 0
export_env_to_heroku.py

@@ -1,3 +1,4 @@
+# export a foreman env to heroku
 import subprocess
 
 def export_env(filename='.env'):

+ 30 - 0
run_with_env.py

@@ -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'))