Prechádzať zdrojové kódy

make directory recursive (#829)

* make directory recursive

Signed-off-by: michael <michael.ma@kkday.com>

* add utils test case

Signed-off-by: michael <michael.ma@kkday.com>

---------

Signed-off-by: michael <michael.ma@kkday.com>
Michael 1 rok pred
rodič
commit
7955c8056d
3 zmenil súbory, kde vykonal 30 pridanie a 1 odobranie
  1. 6 0
      src/Tools/Utils.php
  2. 1 1
      src/Writing/Writer.php
  3. 23 0
      tests/Unit/UtilsTest.php

+ 6 - 0
src/Tools/Utils.php

@@ -9,6 +9,7 @@ use FastRoute\RouteParser\Std;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 use Illuminate\Routing\Route;
+use Illuminate\Support\Facades\File;
 use Illuminate\Support\Str;
 use Knuckles\Scribe\Exceptions\CouldntFindFactory;
 use Knuckles\Scribe\Exceptions\CouldntGetRouteDetails;
@@ -191,6 +192,11 @@ class Utils
         }
     }
 
+    public static function makeDirectoryRecursive(string $dir): void
+    {
+        File::isDirectory($dir) || File::makeDirectory($dir, 0777, true, true);
+    }
+
     public static function deleteFilesMatching(string $dir, callable $condition): void
     {
         if (class_exists(LocalFilesystemAdapter::class)) {

+ 1 - 1
src/Writing/Writer.php

@@ -3,7 +3,6 @@
 namespace Knuckles\Scribe\Writing;
 
 use Illuminate\Support\Facades\Storage;
-use Illuminate\Support\Str;
 use Knuckles\Scribe\Tools\ConsoleOutputUtils as c;
 use Knuckles\Scribe\Tools\DocumentationConfig;
 use Knuckles\Scribe\Tools\Globals;
@@ -96,6 +95,7 @@ class Writer
 
             $spec = $this->generateOpenAPISpec($parsedRoutes);
             if ($this->isStatic) {
+                Utils::makeDirectoryRecursive($this->staticTypeOutputPath);
                 $specPath = "{$this->staticTypeOutputPath}/openapi.yaml";
                 file_put_contents($specPath, $spec);
             } else {

+ 23 - 0
tests/Unit/UtilsTest.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Knuckles\Scribe\Tests\Unit;
+
+use Knuckles\Scribe\Tests\BaseLaravelTest;
+use Knuckles\Scribe\Tools\Utils;
+
+class UtilsTest extends BaseLaravelTest
+{
+    /** @test */
+    public function make_directory_recursive()
+    {
+        $dir = __DIR__ . '/test_dir';
+        Utils::makeDirectoryRecursive($dir);
+        $this->assertDirectoryExists($dir); // Directory exists
+
+        if (rmdir($dir)) { // Remove the directory
+            dump("Directory deleted successfully: $dir");
+        } else { // If deletion fails, you can handle the error as needed
+            dump("Failed to delete directory: $dir");
+        }
+    }
+}