systematic use of context managers for dealing with files instead of open()/close...
[nepi.git] / src / nepi / util / environ.py
index 5949507..32ed19b 100644 (file)
@@ -104,11 +104,11 @@ sshd_path = find_bin("sshd")
 def execute(cmd):
     # FIXME: create a global debug variable
     #print "[pid %d]" % os.getpid(), " ".join(cmd)
-    null = open("/dev/null", "r+")
-    p = subprocess.Popen(cmd, stdout = null, stderr = subprocess.PIPE)
-    out, err = p.communicate()
-    if p.returncode != 0:
-        raise RuntimeError("Error executing `%s': %s" % (" ".join(cmd), err))
+    with open("/dev/null", "r+") as null:
+        p = subprocess.Popen(cmd, stdout = null, stderr = subprocess.PIPE)
+        out, err = p.communicate()
+        if p.returncode != 0:
+            raise RuntimeError("Error executing `%s': %s" % (" ".join(cmd), err))
 
 def backticks(cmd):
     p = subprocess.Popen(cmd, stdout = subprocess.PIPE,
@@ -130,9 +130,8 @@ def gen_ssh_keypair(filename):
 def add_key_to_agent(filename):
     ssh_add = nepi.util.environ.find_bin_or_die("ssh-add")
     args = [ssh_add, filename]
-    null = file("/dev/null", "w")
-    assert subprocess.Popen(args, stderr = null).wait() == 0
-    null.close()
+    with open("/dev/null", "w") as null:
+        assert subprocess.Popen(args, stderr = null).wait() == 0
 
 def get_free_port():
     s = socket.socket()
@@ -155,10 +154,9 @@ PermitUserEnvironment yes
 """
 
 def gen_sshd_config(filename, port, server_key, auth_keys):
-    conf = open(filename, "w")
-    text = _SSH_CONF % (port, server_key, auth_keys)
-    conf.write(text)
-    conf.close()
+    with open(filename, "w") as conf:
+        text = _SSH_CONF % (port, server_key, auth_keys)
+        conf.write(text)
     return filename
 
 def gen_auth_keys(pubkey, output, environ):
@@ -167,11 +165,11 @@ def gen_auth_keys(pubkey, output, environ):
     for k, v in environ.items():
         opts.append('environment="%s=%s"' % (k, v))
 
-    lines = file(pubkey).readlines()
+    with open(pubkey) as f:
+        lines = f.readlines()
     pubkey = lines[0].split()[0:2]
-    out = file(output, "w")
-    out.write("%s %s %s\n" % (",".join(opts), pubkey[0], pubkey[1]))
-    out.close()
+    with open(output, "w") as out:
+        out.write("%s %s %s\n" % (",".join(opts), pubkey[0], pubkey[1]))
     return output
 
 def start_ssh_agent():
@@ -193,10 +191,9 @@ def stop_ssh_agent(data):
     # No need to gather the pid, ssh-agent knows how to kill itself; after we
     # had set up the environment
     ssh_agent = nepi.util.environ.find_bin_or_die("ssh-agent")
-    null = file("/dev/null", "w")
-    proc = subprocess.Popen([ssh_agent, "-k"], stdout = null)
-    null.close()
-    assert proc.wait() == 0
+    with open("/dev/null", "w") as null:
+        proc = subprocess.Popen([ssh_agent, "-k"], stdout = null)
+        assert proc.wait() == 0
     for k in data:
         del os.environ[k]