Browse Source

Make sure .composer dir is created before writing in it

Jordi Boggiano 13 years ago
parent
commit
18e28a2a9f
1 changed files with 13 additions and 0 deletions
  1. 13 0
      src/Composer/Json/JsonFile.php

+ 13 - 0
src/Composer/Json/JsonFile.php

@@ -64,6 +64,19 @@ class JsonFile
      */
     public function write(array $hash)
     {
+        $dir = dirname($this->path);
+        if (!is_dir($dir)) {
+            if (file_exists($dir)) {
+                throw new \UnexpectedValueException(
+                    $dir.' exists and is not a directory.'
+                );
+            }
+            if (!mkdir($dir, 0777, true)) {
+                throw new \UnexpectedValueException(
+                    $dir.' does not exist and could not be created.'
+                );
+            }
+        }
         file_put_contents($this->path, json_encode($hash));
     }