diff options
author | sylvain thenault <sylvain.thenault@logilab.fr> | 2009-01-26 13:13:32 +0100 |
---|---|---|
committer | sylvain thenault <sylvain.thenault@logilab.fr> | 2009-01-26 13:13:32 +0100 |
commit | 85357ee284a99b2af1a90630f5b2e0f5822ec9dc (patch) | |
tree | 1feab40720130ca4d20d2f9cce9812557801a94c | |
parent | ea415842bdb25cc9d4f1c3dbc779def0f027ed93 (diff) | |
download | logilab-common-85357ee284a99b2af1a90630f5b2e0f5822ec9dc.tar.gz |
new pushd context manager
-rw-r--r-- | contexts.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/contexts.py b/contexts.py index a1ade00..d88abfb 100644 --- a/contexts.py +++ b/contexts.py @@ -11,6 +11,7 @@ import sys if sys.version_info < (2, 5): raise ImportError("python >= 2.5 is required to import logilab.common.contexts") +import os import tempfile import shutil @@ -24,4 +25,17 @@ class tempdir(object): # rmtree in all cases shutil.rmtree(self.path) return traceback is None - + + +class pushd(object): + def __init__(self, directory): + self.directory = directory + + def __enter__(self): + self.cwd = os.getcwd() + os.chdir(self.directory) + return self.directory + + def __exit__(self, exctype, value, traceback): + os.chdir(self.cwd) + |