From b990ead00355b6c207e5022b5d77ef321d39c432 Mon Sep 17 00:00:00 2001 From: rzkhrv Date: Sat, 30 Mar 2024 00:47:58 +0300 Subject: [PATCH 1/8] Only installed modules feature --- config.php | 11 ++ src/Support/AutoDiscoveryHelper.php | 199 ++++++++++++++++------------ 2 files changed, 122 insertions(+), 88 deletions(-) diff --git a/config.php b/config.php index a39ac17..ccd7c66 100644 --- a/config.php +++ b/config.php @@ -78,4 +78,15 @@ */ 'stubs' => null, + + /* + |-------------------------------------------------------------------------- + | Only installed + |-------------------------------------------------------------------------- + | + | This allows you to disable the module completely and only use those + | installed in composer. By default, all modules are autoload. + | + */ + 'only_installed' => false, ]; diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index a59996e..00fa701 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -2,107 +2,130 @@ namespace InterNACHI\Modular\Support; +use Illuminate\Support\Str; +use Composer\InstalledVersions; use Illuminate\Filesystem\Filesystem; class AutoDiscoveryHelper { protected string $base_path; + private array $installed_packages = []; public function __construct( protected ModuleRegistry $module_registry, protected Filesystem $filesystem ) { $this->base_path = $module_registry->getModulesPath(); + + if (config('app-modules.only_installed')) { + $this->installed_packages = InstalledVersions::getInstalledPackages(); + } } - - public function commandFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->base_path.'/*/src/Console/Commands'); - } - - public function factoryDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('factories') - ->inOrEmpty($this->base_path.'/*/database/'); - } - - public function migrationDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('migrations') - ->inOrEmpty($this->base_path.'/*/database/'); - } - - public function modelFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->base_path.'/*/src/Models'); - } - - public function bladeComponentFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->base_path.'/*/src/View/Components'); - } - - public function bladeComponentDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->name('Components') - ->inOrEmpty($this->base_path.'/*/src/View'); - } - - public function routeFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->depth(0) - ->name('*.php') - ->sortByName() - ->inOrEmpty($this->base_path.'/*/routes'); - } - - public function viewDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('views') - ->inOrEmpty($this->base_path.'/*/resources/'); - } - - public function langDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('lang') - ->inOrEmpty($this->base_path.'/*/resources/'); - } - - public function listenerDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->name('Listeners') - ->inOrEmpty($this->base_path.'/*/src'); - } - - public function livewireComponentFileFinder(): FinderCollection - { - $directory = $this->base_path.'/*/src'; - if (str_contains(config('livewire.class_namespace'), '\\Http\\')) { - $directory .= '/Http'; - } + private function dirs(string $postfix): array|string + { + if (!config('app-modules.only_installed')) { + return $this->base_path. '/*/' .$postfix; + } - $directory .= '/Livewire'; + $directories = []; + foreach ($this->installed_packages as $installed_package) { + if (Str::startsWith($installed_package, config('app-modules.modules_directory'))) { + $directories[] = base_path($installed_package.'/'.$postfix); + } + } - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($directory); - } + return $directories; + } + + public function commandFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/Console/Commands')); + } + + public function factoryDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('factories') + ->inOrEmpty($this->dirs('database/')); + } + + public function migrationDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('migrations') + ->inOrEmpty($this->dirs('database/')); + } + + public function modelFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/Models')); + } + + public function bladeComponentFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/View/Components')); + } + + public function bladeComponentDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->name('Components') + ->inOrEmpty($this->dirs('src/View')); + } + + public function routeFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->depth(0) + ->name('*.php') + ->sortByName() + ->inOrEmpty($this->dirs('routes')); + } + + public function viewDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('views') + ->inOrEmpty($this->dirs('resources/')); + } + + public function langDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('lang') + ->inOrEmpty($this->dirs('resources/')); + } + + public function listenerDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->name('Listeners') + ->inOrEmpty($this->dirs('src')); + } + + public function livewireComponentFileFinder(): FinderCollection + { + $directory = 'src'; + + if (str_contains(config('livewire.class_namespace'), '\\Http\\')) { + $directory .= '/Http'; + } + + $directory .= '/Livewire'; + + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs($directory)); + } } From a2857a958980cab944d04fd977ab026cda7c02d6 Mon Sep 17 00:00:00 2001 From: rzkhrv Date: Sat, 30 Mar 2024 00:49:28 +0300 Subject: [PATCH 2/8] $installed_packages property --- src/Support/AutoDiscoveryHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index 00fa701..0ff6f18 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -9,7 +9,7 @@ class AutoDiscoveryHelper { protected string $base_path; - private array $installed_packages = []; + protected array $installed_packages = []; public function __construct( protected ModuleRegistry $module_registry, From 91118d52bdb4ae3615ade008720ba9b2f6e5569f Mon Sep 17 00:00:00 2001 From: rzkhrv Date: Sat, 30 Mar 2024 00:53:48 +0300 Subject: [PATCH 3/8] config description --- config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.php b/config.php index ccd7c66..a5be9d3 100644 --- a/config.php +++ b/config.php @@ -84,8 +84,8 @@ | Only installed |-------------------------------------------------------------------------- | - | This allows you to disable the module completely and only use those - | installed in composer. By default, all modules are autoload. + | This allows you to disable autoload the module completely and only use + | those installed in composer. By default, all modules are autoload. | */ 'only_installed' => false, From bc8bdd8e716797cbab096752db2364566199909e Mon Sep 17 00:00:00 2001 From: rzkhrv Date: Sat, 30 Mar 2024 00:54:46 +0300 Subject: [PATCH 4/8] tab --- src/Support/AutoDiscoveryHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index 0ff6f18..e588f1e 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -9,7 +9,7 @@ class AutoDiscoveryHelper { protected string $base_path; - protected array $installed_packages = []; + protected array $installed_packages = []; public function __construct( protected ModuleRegistry $module_registry, From b87582261845cb08b1225bee845e45d7b664e639 Mon Sep 17 00:00:00 2001 From: Chris Morrell Date: Wed, 3 Apr 2024 12:30:20 -0400 Subject: [PATCH 5/8] Code style --- config.php | 6 +- src/Support/AutoDiscoveryHelper.php | 221 ++++++++++++++-------------- 2 files changed, 114 insertions(+), 113 deletions(-) diff --git a/config.php b/config.php index a5be9d3..6f39f5a 100644 --- a/config.php +++ b/config.php @@ -79,14 +79,14 @@ 'stubs' => null, - /* + /* |-------------------------------------------------------------------------- | Only installed |-------------------------------------------------------------------------- | | This allows you to disable autoload the module completely and only use - | those installed in composer. By default, all modules are autoload. + | those installed in composer. By default, all modules are autoload. | */ - 'only_installed' => false, + 'only_installed' => false, ]; diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index e588f1e..9adedb5 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -2,13 +2,14 @@ namespace InterNACHI\Modular\Support; -use Illuminate\Support\Str; use Composer\InstalledVersions; use Illuminate\Filesystem\Filesystem; +use Illuminate\Support\Str; class AutoDiscoveryHelper { protected string $base_path; + protected array $installed_packages = []; public function __construct( @@ -17,115 +18,115 @@ public function __construct( ) { $this->base_path = $module_registry->getModulesPath(); - if (config('app-modules.only_installed')) { - $this->installed_packages = InstalledVersions::getInstalledPackages(); - } + if (config('app-modules.only_installed')) { + $this->installed_packages = InstalledVersions::getInstalledPackages(); + } + } + + private function dirs(string $postfix): array|string + { + if (! config('app-modules.only_installed')) { + return $this->base_path.'/*/'.$postfix; + } + + $directories = []; + foreach ($this->installed_packages as $installed_package) { + if (Str::startsWith($installed_package, config('app-modules.modules_directory'))) { + $directories[] = base_path($installed_package.'/'.$postfix); + } + } + + return $directories; + } + + public function commandFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/Console/Commands')); + } + + public function factoryDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('factories') + ->inOrEmpty($this->dirs('database/')); + } + + public function migrationDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('migrations') + ->inOrEmpty($this->dirs('database/')); + } + + public function modelFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/Models')); } - private function dirs(string $postfix): array|string - { - if (!config('app-modules.only_installed')) { - return $this->base_path. '/*/' .$postfix; - } - - $directories = []; - foreach ($this->installed_packages as $installed_package) { - if (Str::startsWith($installed_package, config('app-modules.modules_directory'))) { - $directories[] = base_path($installed_package.'/'.$postfix); - } - } - - return $directories; - } - - public function commandFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->dirs('src/Console/Commands')); - } - - public function factoryDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('factories') - ->inOrEmpty($this->dirs('database/')); - } - - public function migrationDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('migrations') - ->inOrEmpty($this->dirs('database/')); - } - - public function modelFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->dirs('src/Models')); - } - - public function bladeComponentFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->dirs('src/View/Components')); - } - - public function bladeComponentDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->name('Components') - ->inOrEmpty($this->dirs('src/View')); - } - - public function routeFileFinder(): FinderCollection - { - return FinderCollection::forFiles() - ->depth(0) - ->name('*.php') - ->sortByName() - ->inOrEmpty($this->dirs('routes')); - } - - public function viewDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('views') - ->inOrEmpty($this->dirs('resources/')); - } - - public function langDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->depth(0) - ->name('lang') - ->inOrEmpty($this->dirs('resources/')); - } - - public function listenerDirectoryFinder(): FinderCollection - { - return FinderCollection::forDirectories() - ->name('Listeners') - ->inOrEmpty($this->dirs('src')); - } - - public function livewireComponentFileFinder(): FinderCollection - { - $directory = 'src'; - - if (str_contains(config('livewire.class_namespace'), '\\Http\\')) { - $directory .= '/Http'; - } - - $directory .= '/Livewire'; - - return FinderCollection::forFiles() - ->name('*.php') - ->inOrEmpty($this->dirs($directory)); - } + public function bladeComponentFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs('src/View/Components')); + } + + public function bladeComponentDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->name('Components') + ->inOrEmpty($this->dirs('src/View')); + } + + public function routeFileFinder(): FinderCollection + { + return FinderCollection::forFiles() + ->depth(0) + ->name('*.php') + ->sortByName() + ->inOrEmpty($this->dirs('routes')); + } + + public function viewDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('views') + ->inOrEmpty($this->dirs('resources/')); + } + + public function langDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->depth(0) + ->name('lang') + ->inOrEmpty($this->dirs('resources/')); + } + + public function listenerDirectoryFinder(): FinderCollection + { + return FinderCollection::forDirectories() + ->name('Listeners') + ->inOrEmpty($this->dirs('src')); + } + + public function livewireComponentFileFinder(): FinderCollection + { + $directory = 'src'; + + if (str_contains(config('livewire.class_namespace'), '\\Http\\')) { + $directory .= '/Http'; + } + + $directory .= '/Livewire'; + + return FinderCollection::forFiles() + ->name('*.php') + ->inOrEmpty($this->dirs($directory)); + } } From 9e132a0e8fbd2d403f64acd9c769c5e11bae7380 Mon Sep 17 00:00:00 2001 From: rzkhrv Date: Sat, 27 Apr 2024 18:26:46 +0300 Subject: [PATCH 6/8] use only installed modules --- config.php | 11 ----------- src/Support/AutoDiscoveryHelper.php | 9 +-------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/config.php b/config.php index a5be9d3..a39ac17 100644 --- a/config.php +++ b/config.php @@ -78,15 +78,4 @@ */ 'stubs' => null, - - /* - |-------------------------------------------------------------------------- - | Only installed - |-------------------------------------------------------------------------- - | - | This allows you to disable autoload the module completely and only use - | those installed in composer. By default, all modules are autoload. - | - */ - 'only_installed' => false, ]; diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index e588f1e..fb53c11 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -16,18 +16,11 @@ public function __construct( protected Filesystem $filesystem ) { $this->base_path = $module_registry->getModulesPath(); - - if (config('app-modules.only_installed')) { - $this->installed_packages = InstalledVersions::getInstalledPackages(); - } + $this->installed_packages = InstalledVersions::getInstalledPackages(); } private function dirs(string $postfix): array|string { - if (!config('app-modules.only_installed')) { - return $this->base_path. '/*/' .$postfix; - } - $directories = []; foreach ($this->installed_packages as $installed_package) { if (Str::startsWith($installed_package, config('app-modules.modules_directory'))) { From e65dd4455b98957670a6316a56c6fa88328eb189 Mon Sep 17 00:00:00 2001 From: Chris Morrell Date: Sat, 27 Apr 2024 12:27:24 -0400 Subject: [PATCH 7/8] Revert whitespace --- config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.php b/config.php index f6490e3..95b6dbd 100644 --- a/config.php +++ b/config.php @@ -78,7 +78,7 @@ */ 'stubs' => null, - + /* |-------------------------------------------------------------------------- | Custom override of event discovery @@ -89,6 +89,6 @@ | discovery, set this to true. We will still check the app namespace for | the presence of event discovery. */ - + 'should_discover_events' => null, ]; From b0e3878a4ba10cd793b1af732ef52e197e6ca098 Mon Sep 17 00:00:00 2001 From: Chris Morrell Date: Sat, 27 Apr 2024 12:27:51 -0400 Subject: [PATCH 8/8] Revert whitespace --- src/Support/AutoDiscoveryHelper.php | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Support/AutoDiscoveryHelper.php b/src/Support/AutoDiscoveryHelper.php index 1bb1cf2..316116f 100644 --- a/src/Support/AutoDiscoveryHelper.php +++ b/src/Support/AutoDiscoveryHelper.php @@ -9,7 +9,7 @@ class AutoDiscoveryHelper { protected string $base_path; - + protected array $installed_packages = []; public function __construct( @@ -28,17 +28,17 @@ private function dirs(string $postfix): array|string $directories[] = base_path($installed_package.'/'.$postfix); } } - + return $directories; } - + public function commandFileFinder(): FinderCollection { return FinderCollection::forFiles() ->name('*.php') ->inOrEmpty($this->dirs('src/Console/Commands')); } - + public function factoryDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() @@ -46,7 +46,7 @@ public function factoryDirectoryFinder(): FinderCollection ->name('factories') ->inOrEmpty($this->dirs('database/')); } - + public function migrationDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() @@ -54,28 +54,28 @@ public function migrationDirectoryFinder(): FinderCollection ->name('migrations') ->inOrEmpty($this->dirs('database/')); } - + public function modelFileFinder(): FinderCollection { return FinderCollection::forFiles() ->name('*.php') ->inOrEmpty($this->dirs('src/Models')); } - + public function bladeComponentFileFinder(): FinderCollection { return FinderCollection::forFiles() ->name('*.php') ->inOrEmpty($this->dirs('src/View/Components')); } - + public function bladeComponentDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() ->name('Components') ->inOrEmpty($this->dirs('src/View')); } - + public function routeFileFinder(): FinderCollection { return FinderCollection::forFiles() @@ -84,7 +84,7 @@ public function routeFileFinder(): FinderCollection ->sortByName() ->inOrEmpty($this->dirs('routes')); } - + public function viewDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() @@ -92,7 +92,7 @@ public function viewDirectoryFinder(): FinderCollection ->name('views') ->inOrEmpty($this->dirs('resources/')); } - + public function langDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() @@ -100,24 +100,24 @@ public function langDirectoryFinder(): FinderCollection ->name('lang') ->inOrEmpty($this->dirs('resources/')); } - + public function listenerDirectoryFinder(): FinderCollection { return FinderCollection::forDirectories() ->name('Listeners') ->inOrEmpty($this->dirs('src')); } - + public function livewireComponentFileFinder(): FinderCollection { $directory = 'src'; - + if (str_contains(config('livewire.class_namespace'), '\\Http\\')) { $directory .= '/Http'; } - + $directory .= '/Livewire'; - + return FinderCollection::forFiles() ->name('*.php') ->inOrEmpty($this->dirs($directory));