mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 14:34:04 +00:00
Merge branch 'master' of github.com:archtechx/tenancy
This commit is contained in:
commit
fce95aa862
2 changed files with 8 additions and 23 deletions
|
|
@ -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));
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue