summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md10
-rwxr-xr-xgst-env.py13
2 files changed, 22 insertions, 1 deletions
diff --git a/README.md b/README.md
index ff16c00dde..c5b7c8591d 100644
--- a/README.md
+++ b/README.md
@@ -314,6 +314,16 @@ You can get into the development environment the usual way:
ninja -C $BUILDDIR/ devenv
```
+Alternatively, if you'd rather not start a shell in your workflow, you
+can mutate the current environment into a suitable state like so:
+
+```
+gst-env.py --only-environment
+```
+
+This will print output suitable for an sh-compatible `eval` function,
+just like `ssh-agent -s`.
+
After setting up [binfmt] to use wine for windows binaries,
you can run GStreamer tools under wine by running:
diff --git a/gst-env.py b/gst-env.py
index 2f83fc1b82..86bb32bea0 100755
--- a/gst-env.py
+++ b/gst-env.py
@@ -7,6 +7,7 @@ import os
import platform
import re
import site
+import shlex
import shutil
import subprocess
import sys
@@ -371,6 +372,10 @@ if __name__ == "__main__":
parser.add_argument("--winepath",
default='',
help="Exra path to set to WINEPATH.")
+ parser.add_argument("--only-environment",
+ action='store_true',
+ default=False,
+ help="Do not start a shell, only print required environment.")
options, args = parser.parse_known_args()
if not os.path.exists(options.builddir):
@@ -440,6 +445,12 @@ if __name__ == "__main__":
tmprc.flush()
env['ZDOTDIR'] = tmpdir.name
try:
- exit(subprocess.call(args, close_fds=False, env=env))
+ if options.only_environment:
+ for name, value in env.items():
+ print('{}={}'.format(name, shlex.quote(value)))
+ print('export {}'.format(name))
+ else:
+ exit(subprocess.call(args, close_fds=False, env=env))
+
except subprocess.CalledProcessError as e:
exit(e.returncode)