From 4979811885f20f2d454d2f4e0cb89904bf1392a7 Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Fri, 13 Jan 2017 23:16:57 -0500 Subject: [PATCH] Add ability to add a location via the CLI. closes #242 --- CHANGELOG.md | 2 +- app/Console/Commands/AddLocation.php | 75 ++++++++++++++++++++++++++++ app/Console/Kernel.php | 1 + 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 app/Console/Commands/AddLocation.php diff --git a/CHANGELOG.md b/CHANGELOG.md index ff02b6e74..7d4d6b613 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ This project follows [Semantic Versioning](http://semver.org) guidelines. * Remote routes for daemon to contact in order to allow Daemon to retrieve updated service configuration files on boot. Centralizes services to the panel rather than to each daemon. * Basic service pack implementation to allow assignment of modpacks or software to a server to pre-install applications and allow users to update. * Users can now have a username as well as client name assigned to their account. -* Ability to create a node through the CLI using `pterodactyl:node`. +* Ability to create a node through the CLI using `pterodactyl:node` as well as locations via `pterodactyl:location`. ### Fixed * Bug causing error logs to be spammed if someone timed out on an ajax based page. diff --git a/app/Console/Commands/AddLocation.php b/app/Console/Commands/AddLocation.php new file mode 100644 index 000000000..5fb3acafa --- /dev/null +++ b/app/Console/Commands/AddLocation.php @@ -0,0 +1,75 @@ +. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +namespace Pterodactyl\Console\Commands; + +use Illuminate\Console\Command; +use Pterodactyl\Repositories\LocationRepository; + +class AddLocation extends Command +{ + protected $data = []; + + /** + * The name and signature of the console command. + * + * @var string + */ + protected $signature = 'pterodactyl:location + {--short= : The shortcode name of this location (ex. us1).} + {--long= : A longer description of this location.}'; + + /** + * The console command description. + * + * @var string + */ + protected $description = 'Creates a new location on the system via the CLI.'; + + /** + * Create a new command instance. + * + * @return void + */ + public function __construct() + { + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $this->data['short'] = (is_null($this->option('short'))) ? $this->ask('Location Short Code') : $this->option('short'); + $this->data['long'] = (is_null($this->option('long'))) ? $this->ask('Location Description') : $this->option('long'); + + $repo = new LocationRepository; + $id = $repo->create($this->data); + + $this->info('Location ' . $this->data['short'] . ' created with ID: ' . $id); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 906e68cd9..d55c3525f 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -23,6 +23,7 @@ class Kernel extends ConsoleKernel \Pterodactyl\Console\Commands\UpdateEmailSettings::class, \Pterodactyl\Console\Commands\CleanServiceBackup::class, \Pterodactyl\Console\Commands\AddNode::class, + \Pterodactyl\Console\Commands\AddLocation::class, ]; /**