summaryrefslogtreecommitdiff
path: root/with
diff options
context:
space:
mode:
Diffstat (limited to 'with')
-rwxr-xr-xwith35
1 files changed, 35 insertions, 0 deletions
diff --git a/with b/with
new file mode 100755
index 0000000..469d6bd
--- /dev/null
+++ b/with
@@ -0,0 +1,35 @@
+#!/usr/bin/python3
+
+
+import os
+
+
+import cliapp
+import yaml
+
+
+class With(cliapp.Application):
+
+ def add_settings(self):
+ self.settings.string(
+ ['env-file', 'e'],
+ 'read environment description from FILE',
+ metavar='FILE',
+ default=os.path.expanduser('~/.config/with-envs/environments.yaml'))
+
+ def process_args(self, args):
+ env_name = args[0]
+ argv = args[1:]
+
+ envs = self.get_environments()
+ print(envs)
+ env = dict(os.environ)
+ env.update(envs[env_name])
+ cliapp.runcmd(argv, env=env, stdout=None, stderr=None)
+
+ def get_environments(self):
+ filename = self.settings['env-file']
+ return yaml.safe_load(open(filename))
+
+
+With().run()