mpociot / blacksmith
The unofficial Laravel Forge API
Installs: 168
Dependents: 1
Suggesters: 0
Security: 0
Stars: 103
Watchers: 6
Forks: 16
Open Issues: 2
Requires
- php: >=5.5.0
- behat/mink: ^1.7
- behat/mink-goutte-driver: ^1.2
- mnapoli/silly: ^1.5
- tightenco/collect: ~5.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ~5.0
README
Laravel Forge is awesome, right? Yes it is - but there's one thing it's missing - a proper API.
That's why this library exists - Blacksmith is an unofficial Laravel Forge API to automate common tasks.
The API is still improving and I will keep adding features, as I need them.
Getting Started
use Mpociot\Blacksmith\Blacksmith; $blacksmith = new Blacksmith($email, $password);
Available methods
Get all active servers
Returns a Collection of Server
objects.
$activeServers = $blacksmith->getActiveServers();
Get all sites for all servers
Returns a Collection of Site
objects.
$sites = $blacksmith->getSites();
Get a server by its ID
Returns a single Server
object.
$server = $blacksmith->getServer(1);
Add a server to Forge
Returns a single Server
object with a provision url.
The following example will create a Load Balancer with a custom provider
$server = $blacksmith->addServer([ 'backups' => false, 'database' => 'forge', 'hhvm' => false, 'ip_address' => '94.212.124.121', 'maria' => false, 'name' => 'harmonious-lagoon', 'nodeBalancer' => true, 'old_php' => false, 'php_version' => 'php70', 'private_ip_address' => '10.0.0.2', 'provider' => 'custom', 'size' => '2', 'timezone' => 'Europe/Berlin', ]);
Get a site by its ID
Returns a single Site
object.
$site = $blacksmith->getSite(1);
Get all circles
Returns a Collection of Circle
objects of the user.
$circles = $blacksmith->getCircles();
Get a circle by its ID
Returns a single Circle
object.
$circle = $blacksmith->getCircle(1);
Add a new circle
Returns a single Circle
object.
$circle = $blacksmith->addCircle('Name of Circle');
Get all recipes
Returns a Collection of Recipe
objects.
$recipes = $blacksmith->getRecipes();
Get a recipe by its ID
Returns a single Recipe
object.
$recipe = $blacksmith->getRecipe(1);
Add a new recipe
Returns a single Recipe
object.
$recipe = $blacksmith->addRecipe('RecipeName', 'root', 'Recipe contents');
Server methods
Get Sites
Returns a Collection of Site
objects for the server.
$sites = $server->getSites();
Add a new site
Returns a the newly created Site
object or throws an exception if errors occur.
$newSite = $server->addSite($site_name, $project_type = 'php', $directory = '/public', $wildcards = false);
Add a new SSH key
Add a SSH key to a server
$server->addSSHKey('Name SSH key', 'Contents of SSH key');
Remove a SSH key from a server
$server->removeSSHKey(1);
Update Metadata
Update the metadata of the current site, and return an updated Server
object or throws an exception if errors occur.
$server = $server->updateMetadata($server_name, $ip_address, $private_ip_address, $size);
Get Schedules Jobs
Returns a Collection of ScheduledJob
objects for the server.
$jobs = $server->getScheduledJobs();
Add a new scheduled job
Returns a the newly created ScheduledJob
object or throws an exception if errors occur.
$newJob = $server->addScheduledJob($command, $user = 'forge', $frequency = 'minutely');
toArray
Returns an array containing all available server information.
$data = $server->toArray();
Site methods
Get Environment
Returns the configured .env file
$env_content = $site->getEnvironment();
Install an application
Install and deploy an application to the site.
$site->installApp($repository, $provider = 'github', $branch = 'master', $composer = true, $migrate = false);
Deploy an application
Deploys an application on this site.
$site->deploy();
Get last deployment log
Returns the last deployment log for this site.
$site->deployLog();
toArray
Returns an array containing all available site information.
$data = $site->toArray();
Circle methods
Invite a member by email
Returns a fresh Circle
object or throws an exception if errors occur.
$circle = $circle->inviteMember('email@company.com');
Set all circle members
If you want to delete a member you update a circle with all member id's.
It return a fresh Circle
object.
$circle = $circle->setMembers([1,2]);
Set all circle servers
If you want to add or delete a server from the circle you update a circle with all server id's.
It return a fresh Circle
object.
$circle = $circle->setServers([1,2]);
Recipe methods
Update a Recipe
$recipe = $recipe->update($name, $user, $script);
License
Blacksmith is free software distributed under the terms of the MIT license.