Skip to content

Commit

Permalink
feat: 🚀 Added optimize and optimize:clear commands
Browse files Browse the repository at this point in the history
- Added `--domain` option to `artisan optimize` and `artisan optimize:clear` commands
- Added `AsCommand` attribute in commands
  • Loading branch information
allysonsilva committed Oct 10, 2022
1 parent 30b2b56 commit 0a43c62
Show file tree
Hide file tree
Showing 15 changed files with 217 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
fail-fast: false
matrix:
php: ['8.0', '8.1']
laravel: ['^9.0']
laravel: ['^9.32']
stability: [prefer-lowest, prefer-stable]

name: "CI - PHP: ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.stability }}"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/phpcs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ jobs:
strategy:
matrix:
php: ['8.1', '8.0']
slevomat-coding-standard: [^7.0]
squizlabs-php-codesniffer: [^3.6]
slevomat-coding-standard: [^8.5]
squizlabs-php-codesniffer: [^3.7]

name: "PHPCS | PHP: ${{ matrix.php }}"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/phpmd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
php: ['8.1', '8.0']
phpmd: [^2.11]
phpmd: [^2.13]

name: "PHPMD | PHP: ${{ matrix.php }}"

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/phpstan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ jobs:
strategy:
matrix:
php: ['8.1', '8.0']
phpstan: [^1.0]
phpstan: [^1.8]
symplify-rules: ['10.1.2']
nunomaduro-larastan: [^2.0]
nunomaduro-larastan: [^2.2]
ergebnis-phpstan-rules: [^1.0]

name: "PHPStan | PHP: ${{ matrix.php }}"
Expand Down
16 changes: 13 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,18 @@
"homepage": "https://github.com/allysonsilva/laravel-multienv",
"require": {
"php": ">=8.0",
"laravel/framework": "^9.0"
"laravel/framework": "^9.32"
},
"require-dev": {
"ergebnis/phpstan-rules": "^1.0",
"nunomaduro/larastan": "^2.2",
"orchestra/testbench": "^7.0",
"phpunit/phpunit": "^9.5"
"phpmd/phpmd": "^2.13",
"phpstan/phpstan": "^1.8",
"phpunit/phpunit": "^9.5",
"slevomat/coding-standard": "^8.5",
"squizlabs/php_codesniffer": "^3.7",
"symplify/phpstan-rules": "10.1.2"
},
"minimum-stability": "dev",
"prefer-stable": true,
Expand All @@ -43,7 +50,10 @@
},
"config": {
"optimize-autoloader": true,
"sort-packages": true
"sort-packages": true,
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
},
"extra": {
"laravel": {
Expand Down
7 changes: 7 additions & 0 deletions phpstan.neon.dist
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,10 @@ parameters:
- config
reportUnmatchedIgnoredErrors: false
checkGenericClassInNonGenericObjectType: false
ignoreErrors:
-
message: '#^Trait (.*)BootstrappersTrait is used zero times and is not analysed.#'
path: src/Concerns/BootstrappersTrait.php
-
message: '#^Trait (.*)ConsoleCallTrait is used zero times and is not analysed.#'
path: src/Concerns/ConsoleCallTrait.php
2 changes: 1 addition & 1 deletion src/Bootstrappers/LoadEnvironmentVariables.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ protected function createDotenv($app)
return Dotenv::create(
Env::getRepository(),
[$app->environmentPath(), $envsCustomPath],
[$app->environmentFile(), ...$envsInRootDirectory, $this->domainEnvFilename],
[$app->environmentFile(), ...$envsInRootDirectory, $this->domainEnvFilename], // @phpstan-ignore-line
false
);
}
Expand Down
6 changes: 4 additions & 2 deletions src/Console/Commands/ConfigCacheCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@

namespace Allyson\MultiEnv\Console\Commands;

use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\ConfigCacheCommand as LaravelConfigCacheCommand;

#[AsCommand(name: 'config:cache')]
class ConfigCacheCommand extends LaravelConfigCacheCommand
{
use CommonOptions;

/**
* Call another console command.
* Call another console command without output.
*
* @param \Symfony\Component\Console\Command\Command|string $command
* @param array<mixed> $arguments
*
* @return int
*/
public function call($command, array $arguments = [])
public function callSilent($command, array $arguments = [])
{
$arguments = array_merge($arguments, ['--domain' => $this->option('domain')]);

Expand Down
2 changes: 2 additions & 0 deletions src/Console/Commands/ConfigClearCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

namespace Allyson\MultiEnv\Console\Commands;

use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\ConfigClearCommand as LaravelConfigClearCommand;

#[AsCommand(name: 'config:clear')]
class ConfigClearCommand extends LaravelConfigClearCommand
{
use CommonOptions;
Expand Down
30 changes: 30 additions & 0 deletions src/Console/Commands/OptimizeClearCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

namespace Allyson\MultiEnv\Console\Commands;

use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\OptimizeClearCommand as LaravelOptimizeClearCommand;

#[AsCommand(name: 'optimize:clear')]
class OptimizeClearCommand extends LaravelOptimizeClearCommand
{
use CommonOptions;

/**
* Call another console command without output.
*
* @param \Symfony\Component\Console\Command\Command|string $command
* @param array<mixed> $arguments
*
* @return int
*/
public function callSilent($command, array $arguments = [])
{
if (in_array($command, ['route:clear', 'config:clear'])) {
$arguments = array_merge($arguments, ['--domain' => $this->option('domain')]);
}

return parent::callSilent($command, $arguments);
}
}
28 changes: 28 additions & 0 deletions src/Console/Commands/OptimizeCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace Allyson\MultiEnv\Console\Commands;

use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\OptimizeCommand as LaravelOptimizeCommand;

#[AsCommand(name: 'optimize')]
class OptimizeCommand extends LaravelOptimizeCommand
{
use CommonOptions;

/**
* Call another console command without output.
*
* @param \Symfony\Component\Console\Command\Command|string $command
* @param array<mixed> $arguments
*
* @return int
*/
public function callSilent($command, array $arguments = [])
{
$arguments = array_merge($arguments, ['--domain' => $this->option('domain')]);

return parent::callSilent($command, $arguments);
}
}
2 changes: 2 additions & 0 deletions src/Console/Commands/RouteCacheCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@

use Illuminate\Routing\RouteCollection;
use Illuminate\Routing\RouteCollectionInterface;
use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\RouteCacheCommand as FoundationRouteCacheCommand;

#[AsCommand(name: 'route:cache')]
class RouteCacheCommand extends FoundationRouteCacheCommand
{
use CommonOptions;
Expand Down
2 changes: 2 additions & 0 deletions src/Console/Commands/RouteClearCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

namespace Allyson\MultiEnv\Console\Commands;

use Symfony\Component\Console\Attribute\AsCommand;
use Allyson\MultiEnv\Console\Concerns\CommonOptions;
use Illuminate\Foundation\Console\RouteClearCommand as LaravelRouteClearCommand;

#[AsCommand(name: 'route:clear')]
class RouteClearCommand extends LaravelRouteClearCommand
{
use CommonOptions;
Expand Down
25 changes: 23 additions & 2 deletions src/Providers/ArtisanServiceProvider.php
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

namespace Allyson\MultiEnv\Providers;

use Illuminate\Console\Signals;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Support\DeferrableProvider;
use Allyson\MultiEnv\Console\Commands\OptimizeCommand;
use Allyson\MultiEnv\Console\Commands\RouteCacheCommand;
use Allyson\MultiEnv\Console\Commands\RouteClearCommand;
use Allyson\MultiEnv\Console\Commands\ConfigCacheCommand;
use Allyson\MultiEnv\Console\Commands\ConfigClearCommand;
use Allyson\MultiEnv\Console\Commands\OptimizeClearCommand;

class ArtisanServiceProvider extends ServiceProvider implements DeferrableProvider
{
Expand All @@ -19,6 +22,8 @@ class ArtisanServiceProvider extends ServiceProvider implements DeferrableProvid
protected $commands = [
'ConfigCache' => ConfigCacheCommand::class,
'ConfigClear' => ConfigClearCommand::class,
'Optimize' => OptimizeCommand::class,
'OptimizeClear' => OptimizeClearCommand::class,
'RouteCache' => RouteCacheCommand::class,
'RouteClear' => RouteClearCommand::class,
];
Expand All @@ -31,6 +36,14 @@ class ArtisanServiceProvider extends ServiceProvider implements DeferrableProvid
public function register(): void
{
$this->registerCommands($this->commands);

// @codeCoverageIgnoreStart
Signals::resolveAvailabilityUsing(function () {
return $this->app->runningInConsole()
&& ! $this->app->runningUnitTests()
&& extension_loaded('pcntl');
});
// @codeCoverageIgnoreEnd
}

/**
Expand All @@ -52,8 +65,16 @@ public function provides()
*/
protected function registerCommands(array $commands): void
{
foreach (array_keys($commands) as $command) {
$this->{"register{$command}Command"}();
foreach (array_keys($commands) as $commandName) {
$method = "register{$commandName}Command";

if (method_exists($this, $method)) {
$this->{$method}();

continue;
}

$this->app->singleton($commandName);
}

$commands = array_values($commands);
Expand Down
Loading

0 comments on commit 0a43c62

Please sign in to comment.