1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 12:24:04 +00:00

Improve tenants:run command (#912)

* improve `tenants:run` command

* Update Run.php
This commit is contained in:
Abrar Ahmad 2022-08-04 23:29:39 +05:00 committed by GitHub
parent 3d8d670447
commit a45aa8e274
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 23 deletions

View file

@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Stancl\Tenancy\Commands; namespace Stancl\Tenancy\Commands;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
class Run extends Command class Run extends Command
{ {
@ -20,10 +21,8 @@ class Run extends Command
* *
* @var string * @var string
*/ */
protected $signature = "tenants:run {commandname : The command's name.} protected $signature = "tenants:run {commandname : The artisan command.}
{--tenants=* : The tenant(s) to run the command for. Default: all} {--tenants=* : The tenant(s) to run the command for. Default: all}";
{--argument=* : The arguments to pass to the command. Default: none}
{--option=* : The options to pass to the command. Default: none}";
/** /**
* Execute the console command. * Execute the console command.
@ -33,23 +32,9 @@ class Run extends Command
tenancy()->runForMultiple($this->option('tenants'), function ($tenant) { tenancy()->runForMultiple($this->option('tenants'), function ($tenant) {
$this->line("Tenant: {$tenant->getTenantKey()}"); $this->line("Tenant: {$tenant->getTenantKey()}");
$callback = function ($prefix = '') { Artisan::call($this->argument('commandname'));
return function ($arguments, $argument) use ($prefix) { $this->comment('Command output:');
[$key, $value] = explode('=', $argument, 2); $this->info(Artisan::output());
$arguments[$prefix . $key] = $value;
return $arguments;
};
};
// Turns ['foo=bar', 'abc=xyz=zzz'] into ['foo' => 'bar', 'abc' => 'xyz=zzz']
$arguments = array_reduce($this->option('argument'), $callback(), []);
// Turns ['foo=bar', 'abc=xyz=zzz'] into ['--foo' => 'bar', '--abc' => 'xyz=zzz']
$options = array_reduce($this->option('option'), $callback('--'), []);
// Run command
$this->call($this->argument('commandname'), array_merge($arguments, $options));
}); });
} }
} }

View file

@ -174,7 +174,7 @@ test('run command with array of tenants works', function () {
$tenantId2 = Tenant::create()->getTenantKey(); $tenantId2 = Tenant::create()->getTenantKey();
Artisan::call('tenants:migrate-fresh'); Artisan::call('tenants:migrate-fresh');
pest()->artisan("tenants:run foo --tenants=$tenantId1 --tenants=$tenantId2 --argument='a=foo' --option='b=bar' --option='c=xyz'") pest()->artisan("tenants:run --tenants=$tenantId1 --tenants=$tenantId2 'foo foo --b=bar --c=xyz'")
->expectsOutput('Tenant: ' . $tenantId1) ->expectsOutput('Tenant: ' . $tenantId1)
->expectsOutput('Tenant: ' . $tenantId2); ->expectsOutput('Tenant: ' . $tenantId2);
}); });
@ -186,7 +186,7 @@ function runCommandWorks(): void
Artisan::call('tenants:migrate', ['--tenants' => [$id]]); Artisan::call('tenants:migrate', ['--tenants' => [$id]]);
pest()->artisan("tenants:run foo --tenants=$id --argument='a=foo' --option='b=bar' --option='c=xyz'") pest()->artisan("tenants:run --tenants=$id 'foo foo --b=bar --c=xyz' ")
->expectsOutput("User's name is Test command") ->expectsOutput("User's name is Test command")
->expectsOutput('foo') ->expectsOutput('foo')
->expectsOutput('xyz'); ->expectsOutput('xyz');