Viewing file: Updater.php (2.44 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Nwidart\Modules\Process;
use Nwidart\Modules\Module;
class Updater extends Runner { /** * Update the dependencies for the specified module by given the module name. * * @param string $module */ public function update($module) { $module = $this->module->findOrFail($module);
chdir(base_path());
$this->installRequires($module); $this->installDevRequires($module); $this->copyScriptsToMainComposerJson($module); }
/** * Check if composer should output anything. * * @return string */ private function isComposerSilenced() { return config('modules.composer.composer-output') === false ? ' --quiet' : ''; }
/** * @param Module $module */ private function installRequires(Module $module) { $packages = $module->getComposerAttr('require', []);
$concatenatedPackages = ''; foreach ($packages as $name => $version) { $concatenatedPackages .= "\"{$name}:{$version}\" "; }
if (!empty($concatenatedPackages)) { $this->run("composer require {$concatenatedPackages}{$this->isComposerSilenced()}"); } }
/** * @param Module $module */ private function installDevRequires(Module $module) { $devPackages = $module->getComposerAttr('require-dev', []);
$concatenatedPackages = ''; foreach ($devPackages as $name => $version) { $concatenatedPackages .= "\"{$name}:{$version}\" "; }
if (!empty($concatenatedPackages)) { $this->run("composer require --dev {$concatenatedPackages}{$this->isComposerSilenced()}"); } }
/** * @param Module $module */ private function copyScriptsToMainComposerJson(Module $module) { $scripts = $module->getComposerAttr('scripts', []);
$composer = json_decode(file_get_contents(base_path('composer.json')), true);
foreach ($scripts as $key => $script) { if (array_key_exists($key, $composer['scripts'])) { $composer['scripts'][$key] = array_unique(array_merge($composer['scripts'][$key], $script)); continue; } $composer['scripts'] = array_merge($composer['scripts'], [$key => $script]); }
file_put_contents(base_path('composer.json'), json_encode($composer, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); } }
|