crazy stuff
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Lucent\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class DeveloperMode extends Command
|
||||
{
|
||||
protected $signature = "lucent:developer {enable} {path}";
|
||||
protected $description = "Change composer.json to enable or disable the developer repository";
|
||||
|
||||
public function handle(): void
|
||||
{
|
||||
$enable = $this->argument("enable") === "enable";
|
||||
$path = $this->argument("path");
|
||||
|
||||
if ($enable) {
|
||||
$this->enable($path);
|
||||
} else {
|
||||
$this->disable($path);
|
||||
}
|
||||
}
|
||||
|
||||
private function getComposerJson(): array
|
||||
{
|
||||
return json_decode(file_get_contents(base_path("composer.json")), true);
|
||||
}
|
||||
|
||||
private function replaceComposerJson(array $composerJson): void
|
||||
{
|
||||
file_put_contents(
|
||||
base_path("composer.json"),
|
||||
json_encode(
|
||||
$composerJson,
|
||||
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
private function enable(string $path): void
|
||||
{
|
||||
$productionRepo = $this->productionRepository();
|
||||
$composerJson = $this->getComposerJson();
|
||||
$composerJson["repositories"] = array_filter(
|
||||
$composerJson["repositories"],
|
||||
fn($repo) => $repo["url"] !== $productionRepo["url"],
|
||||
);
|
||||
|
||||
$composerJson["repositories"][] = $this->devRepository($path);
|
||||
$this->replaceComposerJson($composerJson);
|
||||
}
|
||||
|
||||
private function disable(string $path): void
|
||||
{
|
||||
$devRepo = $this->devRepository($path);
|
||||
$composerJson = $this->getComposerJson();
|
||||
$composerJson["repositories"] = array_filter(
|
||||
$composerJson["repositories"],
|
||||
fn($repo) => $repo["url"] !== $devRepo["url"],
|
||||
);
|
||||
$composerJson["repositories"][] = $this->productionRepository();
|
||||
$this->replaceComposerJson($composerJson);
|
||||
}
|
||||
|
||||
private function productionRepository(): array
|
||||
{
|
||||
return [
|
||||
"type" => "vcs",
|
||||
"url" =>
|
||||
"ssh://git@code.radical-elements.com:2727/lucent/lucent-laravel.git",
|
||||
];
|
||||
}
|
||||
|
||||
private function devRepository(string $localPath): array
|
||||
{
|
||||
return [
|
||||
"type" => "path",
|
||||
"url" => $localPath,
|
||||
"options" => [
|
||||
"symlink" => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user