diff --git a/README.md b/README.md index 21383fc..5e3bf3f 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,9 @@ $eventId = $spinupwp->sites->purgeObjectCache($siteId); // Reset a site's file permissions $eventId = $spinupwp->sites->correctFilePermissions($siteId); + +// Run WP-CLI commands on a site +$eventId = $spinupwp->sites->wpCli($siteId, ['plugin list --status=active', 'core version']); ``` On a `Site` instance you may also call: ```php @@ -117,6 +120,9 @@ $site->purgeObjectCache(); // Reset a site's file permissions $site->correctFilePermissions(); + +// Run WP-CLI commands +$site->wpCli(['plugin list --status=active', 'core version']); ```` ### Events diff --git a/src/Endpoints/Site.php b/src/Endpoints/Site.php index da4b531..c656b72 100644 --- a/src/Endpoints/Site.php +++ b/src/Endpoints/Site.php @@ -92,4 +92,13 @@ public function correctFilePermissions(int $id): int return $request['event_id']; } + + public function wpCli(int $id, array $commands): int + { + $request = $this->postRequest("sites/{$id}/wp-cli", [ + 'commands' => $commands, + ]); + + return $request['event_id']; + } } diff --git a/src/Resources/Site.php b/src/Resources/Site.php index e4a66f5..e2f5af5 100644 --- a/src/Resources/Site.php +++ b/src/Resources/Site.php @@ -32,4 +32,9 @@ public function correctFilePermissions(): int { return $this->spinupwp->sites->correctFilePermissions($this->id); } + + public function wpCli(array $commands): int + { + return $this->spinupwp->sites->wpCli($this->id, $commands); + } } diff --git a/tests/Endpoints/SiteTest.php b/tests/Endpoints/SiteTest.php index b600916..2cccf47 100644 --- a/tests/Endpoints/SiteTest.php +++ b/tests/Endpoints/SiteTest.php @@ -133,6 +133,19 @@ public function test_correct_file_permissions(): void $this->assertEquals(100, $this->siteEndpoint->correctFilePermissions(1)); } + public function test_wp_cli(): void + { + $this->client->shouldReceive('request')->once()->with('POST', 'sites/1/wp-cli', [ + 'form_params' => [ + 'commands' => ['plugin list --status=active', 'core version'], + ], + ])->andReturn( + new Response(200, [], '{"event_id": 100}') + ); + + $this->assertEquals(100, $this->siteEndpoint->wpCli(1, ['plugin list --status=active', 'core version'])); + } + public function test_handling_validation_errors(): void { $this->client->shouldReceive('request')->once()->with('POST', 'sites', [